Compartir a través de


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

Crear y dibujar trazados

GraphicsPath::GetPathData

Graphicspath

GraphicsPathIterator

GraphicsPathIterator::CopyData

GraphicsPathIterator::GetSubpathCount

GraphicsPathIterator::NextMarker (Métodos)

NextSubpath

Paths