Método GraphicsPathIterator::NextSubpath(INT*,INT*,BOOL*) (gdipluspath.h)
El método GraphicsPathIterator::NextSubpath obtiene el índice inicial y el índice final de la siguiente subruta (figura) en la ruta de acceso asociada del iterador.
Sintaxis
INT NextSubpath(
INT *startIndex,
INT *endIndex,
BOOL *isClosed
);
Parámetros
startIndex
Puntero a un INT que recibe el índice inicial.
endIndex
Puntero a un INT que recibe el índice final.
isClosed
Puntero a una BOOL que recibe un valor que indica si la figura obtenida está cerrada. Si se cierra la figura, el valor recibido es TRUE; de lo contrario, el valor recibido es FALSE.
Valor devuelto
Este método devuelve el número de puntos de datos de la ilustración siguiente. Si no hay más figuras en la ruta de acceso, este método devuelve 0.
Comentarios
La primera vez que se llama al método GraphicsPathIterator::NextSubpath de un iterador, obtiene los índices de la primera figura (subruta) de la ruta de acceso asociada del iterador. La segunda vez, obtiene los índices de la segunda figura, etc. Cada vez que se llama a GraphicsPathIterator::NextSubpath, devuelve el número de puntos de datos de la ilustración cuyos índices se recuperaron. Cuando no quedan cifras, devuelve 0.
Ejemplos
En el ejemplo siguiente se crea un objeto GraphicsPath y se agregan cinco figuras a la ruta de acceso. El código pasa la dirección de ese objeto GraphicsPath a un constructor GraphicsPathIterator para crear un iterador asociado a la ruta de acceso. El código llama al método GraphicsPathIterator::NextSubpath del iterador tres veces para obtener el índice inicial y el índice final de la tercera figura de la ruta de acceso. A continuación, el código llama al método GraphicsPathIterator::CopyData del iterador para recuperar los puntos de datos de la tercera figura.
VOID NextSubpathExample2(HDC hdc)
{
Graphics graphics(hdc);
// Create a graphics path with five figures (subpaths).
GraphicsPath path;
path.AddRectangle(Rect(20, 20, 60, 30)); // Subpath count is 1.
path.AddLine(100, 20, 160, 50); // Subpath count is 2.
path.AddArc(180, 20, 60, 30, 0.0f, 180.0f);
path.AddRectangle(Rect(260, 20, 60, 30)); // Subpath count is 3.
path.AddLine(340, 20, 400, 50); // Subpath count is 4.
path.AddArc(340, 20, 60, 30, 0.0f, 180.0f);
path.CloseFigure();
path.AddRectangle(Rect(420, 20, 60, 30)); // Subpath count is 5.
// Create an iterator, and associate it with the path.
GraphicsPathIterator iterator(&path);
// Call NextSubpath three times to get the starting and ending
// indices for the third figure.
INT start;
INT end;
BOOL isClosed;
INT count;
count = iterator.NextSubpath(&start, &end, &isClosed);
count = iterator.NextSubpath(&start, &end, &isClosed);
count = iterator.NextSubpath(&start, &end, &isClosed);
// Get the third figure's data points.
PointF* points = new PointF[count];
BYTE* types = new BYTE[count];
iterator.CopyData(points, types, start, end);
// Draw the third figure's data points.
SolidBrush brush(Color(255, 255, 0, 0));
for(INT j = 0; j < count; ++j)
graphics.FillEllipse(
&brush,
points[j].X - 3.0f,
points[j].Y - 3.0f,
6.0f,
6.0f);
delete points;
delete types;
}
Requisitos
Encabezado | gdipluspath.h |
Consulte también
GraphicsPathIterator::CopyData
GraphicsPathIterator::GetSubpathCount