Freigeben über


GraphicsPathIterator::NextSubpath(INT*,INT*,BOOL*)-Methode (gdipluspath.h)

Die GraphicsPathIterator::NextSubpath-Methode ruft den Startindex und den Endindex des nächsten Unterpfads (Abbildung) im zugeordneten Pfad dieses Iterators ab.

Syntax

INT NextSubpath(
  INT  *startIndex,
  INT  *endIndex,
  BOOL *isClosed
);

Parameter

startIndex

Zeiger auf einen INT , der den Startindex empfängt.

endIndex

Zeiger auf einen INT , der den Endindex empfängt.

isClosed

Zeiger auf eine BOOL , die einen Wert empfängt, der angibt, ob die abgerufene Abbildung geschlossen ist. Wenn die Abbildung geschlossen ist, ist der empfangene Wert TRUE. andernfalls ist der empfangene Wert FALSE.

Rückgabewert

Diese Methode gibt die Anzahl der Datenpunkte in der nächsten Abbildung zurück. Wenn im Pfad keine weiteren Abbildungen vorhanden sind, gibt diese Methode 0 zurück.

Hinweise

Wenn Sie die GraphicsPathIterator::NextSubpath-Methode eines Iterators zum ersten Mal aufrufen, werden die Indizes für die erste Abbildung (Unterpfad) des zugeordneten Pfads dieses Iterators abgerufen. Beim zweiten Mal werden die Indizes für die zweite Abbildung usw. abgerufen. Jedes Mal, wenn Sie GraphicsPathIterator::NextSubpath aufrufen, gibt er die Anzahl der Datenpunkte in der Abbildung zurück, deren Indizes abgerufen wurden. Wenn keine Zahlen mehr vorhanden sind, wird 0 zurückgegeben.

Beispiele

Im folgenden Beispiel wird ein GraphicsPath-Objekt erstellt und dem Pfad fünf Abbildungen hinzugefügt. Der Code übergibt die Adresse dieses GraphicsPath-Objekts an einen GraphicsPathIterator-Konstruktor , um einen Iterator zu erstellen, der dem Pfad zugeordnet ist. Der Code ruft die GraphicsPathIterator::NextSubpath-Methode des Iterators dreimal auf, um den Startindex und den Endindex der dritten Abbildung des Pfads abzurufen. Anschließend ruft der Code die GraphicsPathIterator::CopyData-Methode des Iterators auf, um die Datenpunkte der dritten Abbildung abzurufen.

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;
}

Requirements (Anforderungen)

   
Kopfzeile gdipluspath.h

Weitere Informationen

Erstellen und Zeichnen von Pfaden

GraphicsPath::GetPathData

Graphicspath

Graphicspathiterator

GraphicsPathIterator::CopyData

GraphicsPathIterator::GetSubpathCount

GraphicsPathIterator::NextMarker-Methoden

Graphicspathiterator.nextsubpath

Paths