Share via


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

Die GraphicsPathIterator::NextMarker-Methode ruft den Startindex und den Endindex des nächsten durch Marker getrennten Abschnitts im zugeordneten Pfad dieses Iterators ab.

Syntax

INT NextMarker(
  INT *startIndex,
  INT *endIndex
);

Parameter

startIndex

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

endIndex

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

Rückgabewert

Diese Methode gibt die Anzahl der Datenpunkte im abgerufenen Abschnitt zurück. Wenn keine abschnitte mit Markertrennzeichen mehr abgerufen werden müssen, gibt diese Methode 0 zurück.

Hinweise

Ein Pfad verfügt über ein Array von Datenpunkten, die seine Linien und Kurven definieren. Sie können die SetMarker-Methode eines Pfads aufrufen, um bestimmte Punkte im Array als Marker festzulegen. Diese Markerpunkte unterteilen den Pfad in Abschnitte.

Wenn Sie die GraphicsPathIterator::NextMarker-Methode eines Iterators zum ersten Mal aufrufen, ruft sie den ersten abschnitt des zugeordneten Pfads dieses Iterators ab. Beim zweiten Mal wird der zweite Abschnitt abgerufen usw. Jedes Mal, wenn Sie GraphicsPathIterator::NextSubpath aufrufen, wird die Anzahl der Datenpunkte im abgerufenen Abschnitt zurückgegeben. Wenn keine Abschnitte mehr vorhanden sind, wird 0 zurückgegeben.

Beispiele

Im folgenden Beispiel wird ein GraphicsPath-Objekt erstellt und dem Pfad fünf Abbildungen hinzugefügt. Die Aufrufe der SetMarker-Methode platzieren zwei Marker im Pfad. Der erste Marker befindet sich am Ende einer Abbildung, und der zweite Marker befindet sich in der Mitte einer Abbildung. Der Code übergibt die Adresse des GraphicsPath-Objekts an einen GraphicsPathIterator-Konstruktor , um einen Iterator zu erstellen, der dem Pfad zugeordnet ist. Anschließend ruft der Code zweimal die GraphicsPathIterator::NextMarker-Methode des Iterators auf, um die anfangs- und endenden Indizes des zweiten durch Marker getrennten Abschnitts des Pfads abzurufen. Schließlich zeichnet der Code die Datenpunkte, die zum zweiten durch Marker getrennten Abschnitt des Pfads gehören.

VOID NextMarkerExample2(HDC hdc)
{
   Graphics graphics(hdc);

   // Create a graphics path with five figures (subpaths).
   GraphicsPath path;

   path.AddRectangle(Rect(20, 20, 60, 30));

   path.SetMarker();                          // first marker
   path.AddLine(100, 20, 160, 50);
   path.AddArc(180, 20, 60, 30, 0, 180);

   path.AddRectangle(Rect(260, 20, 60, 30));
   path.AddLine(340, 20, 400, 50);
   path.SetMarker();                          // second marker
   path.AddArc(340, 20, 60, 30, 0, 180);
   path.CloseFigure();
  
   path.AddRectangle(Rect(420, 20, 60, 30));

   // Create an iterator, and associate it with the path.
   GraphicsPathIterator iterator(&path);

   // Get the second marker-delimited section by calling NextMarker twice.
   INT start;
   INT end;
   INT count;
   count = iterator.NextMarker(&start, &end);
   count = iterator.NextMarker(&start, &end);

   // Get the data points of the second marker-delimited section.
   PointF* points = new PointF[count];
   BYTE* types = new BYTE[count];
   iterator.CopyData(points, types, start, end);

   // Draw the data points of the second marker-delimited section.
   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;
}

Anforderungen

Anforderung Wert
Header gdipluspath.h

Weitere Informationen

Erstellen und Zeichnen von Pfaden

Graphicspath

GraphicsPathIterator::NextMarker-Methoden

Graphicspathiterator

GraphicsPathIterator::CopyData

GraphicsPathIterator::NextMarker-Methoden

Paths