Pfade (GDI+)

Pfade werden durch Kombinieren von Linien, Rechtecken und einfachen Kurven gebildet. Erinnern Sie sich an die Übersicht über Vektorgrafiken , dass sich die folgenden grundlegenden Bausteine als die nützlichsten für das Zeichnen von Bildern erwiesen haben.

  • Linien
  • Rechtecke
  • Ellipsen
  • Bögen
  • Polygone
  • Kardinale Splines
  • Bézier-Splines

In Windows GDI+ können Sie mit dem GraphicsPath-Objekt eine Sequenz dieser Bausteine in einer einzelnen Einheit sammeln. Die gesamte Sequenz von Linien, Rechtecke, Polygonen und Kurven kann dann mit einem Aufruf der Graphics::D rawPath-Methode der Graphics-Klasse gezeichnet werden. Die folgende Abbildung zeigt einen Pfad, der durch die Kombination einer Linie mit einem Bogen, einem Bézier-Spline und einem kardinalen Spline erzeugt wird.

Abbildung eines Pfads, der eine Linie, einen Bogen, eine Bezier-Spline und eine Kardinalspline kombiniert

Die GraphicsPath-Klasse bietet die folgenden Methoden zum Erstellen einer Sequenz von Elementen, die gezeichnet werden sollen: AddLine, AddRectangle, AddEllipse, AddArc, AddPolygon, AddCurve (für Kardinalsplines) und AddBezier. Jede dieser Methoden ist überladen; Das heißt, jede Methode enthält mehrere Varianten mit unterschiedlichen Parameterlisten. Beispielsweise empfängt eine Variante der AddLine-Methode vier ganze Zahlen, und eine andere Variante der AddLine-Methode empfängt zwei Point-Objekte .

Die Methoden zum Hinzufügen von Zeilen, Rechtecke und Bézier-Splines zu einem Pfad verfügen über plurale Begleitmethoden, die dem Pfad in einem einzigen Aufruf mehrere Elemente hinzufügen: AddLines, AddRectangles und AddBeziers. Außerdem verfügt die AddCurve-Methode über die Begleitmethode AddClosedCurve, die dem Pfad eine geschlossene Kurve hinzufügt.

Zum Zeichnen eines Pfads benötigen Sie ein Graphics-Objekt , ein Pen-Objekt und ein GraphicsPath-Objekt . Das Graphics-Objekt stellt die Graphics::D rawPath-Methode bereit, und das Pen-Objekt speichert Attribute des Pfads, z. B. Linienbreite und Farbe. Das GraphicsPath-Objekt speichert die Sequenz der Linien, Rechtecke und Kurven, aus denen der Pfad besteht. Die Adressen des Pen-Objekts und des GraphicsPath-Objekts werden als Argumente an die Graphics::D rawPath-Methode übergeben. Das folgende Beispiel zeichnet einen Pfad, der aus einer Linie, einer Ellipse und einer Bézier-Spline besteht.

myGraphicsPath.AddLine(0, 0, 30, 20);
myGraphicsPath.AddEllipse(20, 20, 20, 40);
myGraphicsPath.AddBezier(30, 60, 70, 60, 50, 30, 100, 10);
myGraphics.DrawPath(&myPen, &myGraphicsPath);

Die folgende Abbildung zeigt den Pfad.

Abbildung eines Pfads, der aus einer Linie, einer Ellipse und einer Bézierspline besteht

Zusätzlich zum Hinzufügen von Linien, Rechtecken und Kurven zu einem Pfad können Sie einem Pfad auch Pfade hinzufügen. Auf diese Weise können Sie vorhandene Pfade zu großen, komplexen Pfaden kombinieren. Der folgende Code fügt "graphicsPath1" und "graphicsPath2 " zu myGraphicsPath hinzu. Der zweite Parameter der GraphicsPath::AddPath-Methode gibt an, ob der hinzugefügte Pfad mit dem vorhandenen Pfad verbunden ist.

myGraphicsPath.AddPath(&graphicsPath1, FALSE);
myGraphicsPath.AddPath(&graphicsPath2, TRUE);

Es gibt zwei weitere Elemente, die Sie einem Pfad hinzufügen können: Zeichenfolgen und Kreise. Ein Kreis ist ein Teil des Inneren einer Ellipse. Im folgenden Beispiel wird ein Pfad aus einem Bogen, einer Kardinalspline, einer Zeichenfolge und einem Kreis erstellt.

myGraphicsPath.AddArc(0, 0, 30, 20, -90, 180);
myGraphicsPath.AddCurve(myPointArray, 3);
myGraphicsPath.AddString(L"a string in a path", 18, &myFontFamily, 
   0, 24, myPointF, &myStringFormat);
myGraphicsPath.AddPie(230, 10, 40, 40, 40, 110);
myGraphics.DrawPath(&myPen, &myGraphicsPath);

Die folgende Abbildung zeigt den Pfad. Beachten Sie, dass ein Pfad nicht verbunden sein muss. Der Bogen, der kardinale Spline, die Zeichenfolge und der Kreis sind getrennt.

Abbildung eines Pfads, der aus getrennten Linien besteht: ein Bogen, eine Kardinalspline, eine Zeichenfolge und ein Kreis