Grafikpfade in GDI+

Pfade werden durch Kombinieren von Linien, Rechtecken und einfachen Kurven gebildet. Wie bereits unter Übersicht über Vektorgrafiken erläutert, haben sich die folgenden Grundbausteine als die sinnvollsten Elemente zum Zeichnen von Bildern erwiesen:

  • Linien

  • Rechtecke

  • Ellipsen

  • Bögen

  • Polygone

  • Kardinale Splines

  • Bézier-Splines

In GDI+ können Sie mit dem GraphicsPath-Objekt eine Sequenz solcher Bausteine zu einer einzigen Einheit zusammenfassen. Die gesamte Sequenz aus Linien, Rechtecken, Polygonen und Kurven kann dann mit einem einzigen Aufruf der DrawPath-Methode der Graphics-Klasse gezeichnet werden. Die folgende Abbildung zeigt einen Pfad, der durch Kombination einer Linie mit einem Bogen, einem Bézier-Spline und einem kardinalen Spline erstellt wird.

Pfad

Verwenden eines Pfades

Die GraphicsPath-Klasse stellt die folgenden Methoden zum Erstellen einer Sequenz von Zeichenelementen bereit: AddLine, AddRectangle, AddEllipse, AddArc, AddPolygon, AddCurve (für kardinale Splines) und AddBezier. Jede dieser Methoden ist überladen, d. h. jede Methode unterstützt mehrere verschiedene Parameterlisten. Eine Variante der AddLine-Methode erhält beispielsweise vier ganze Zahlen, während eine andere Variante der AddLine-Methode zwei Point-Objekte erhält.

Die Methoden zum Hinzufügen von Linien, Rechtecken und Bézier-Splines zu einem Pfad verfügen über mehrere Begleitmethoden, durch die dem Pfad in einem einzelnen Aufruf mehrere Elemente hinzugefügt werden: AddLines, AddRectangles und AddBeziers. Darüber hinaus verfügen die Methoden AddCurve und AddArc über die Begleitmethoden AddClosedCurve und AddPie, durch die dem Pfad eine geschlossene Kurve bzw. ein geschlossener Kreis hinzugefügt wird.

Um einen Pfad zu zeichnen, benötigen Sie ein Graphics-Objekt, ein Pen-Objekt und ein GraphicsPath-Objekt. Das Graphics-Objekt stellt die DrawPath-Methode bereit. Das Pen-Objekt speichert Attribute, z. B. Farbe und Stärke der Linie, mit der der Pfad gerendert wird. Das GraphicsPath-Objekt speichert die Sequenz von Linien und Kurven, die den Pfad bilden. Die Objekte Pen und GraphicsPath werden der DrawPath-Methode als Argumente übergeben. Im folgenden Beispiel wird ein Pfad gezeichnet, der aus einer Linie, einer Ellipse und einem 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)

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.

Pfad

Zusätzlich zu Linien, Rechtecken und Kurven können Sie einem Pfad auch Pfade hinzufügen. Dadurch können Sie vorhandene Pfade zu komplexen Pfaden zusammenfügen.

        myGraphicsPath.AddPath(graphicsPath1, False)
        myGraphicsPath.AddPath(graphicsPath2, False)

myGraphicsPath.AddPath(graphicsPath1, false);
myGraphicsPath.AddPath(graphicsPath2, false);

Zwei weitere Elemente können einem Pfad hinzugefügt werden: Zeichenfolgen und Kreissegmente. Ein Kreissegment ist ein Teil der Innenfläche einer Ellipse. Im folgenden Beispiel wird ein Pfad aus einem Bogen, einem kardinalen Spline, einer Zeichenfolge und einem Kreissegment erstellt:

        Dim myGraphicsPath As New GraphicsPath()

        Dim myPointArray As Point() = { _
           New Point(5, 30), _
           New Point(20, 40), _
           New Point(50, 30)}

        Dim myFontFamily As New FontFamily("Times New Roman")
        Dim myPointF As New PointF(50, 20)
        Dim myStringFormat As New StringFormat()

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

     GraphicsPath myGraphicsPath = new GraphicsPath();

     Point[] myPointArray = {
new Point(5, 30), 
new Point(20, 40), 
new Point(50, 30)};

     FontFamily myFontFamily = new FontFamily("Times New Roman");
     PointF myPointF = new PointF(50, 20);
     StringFormat myStringFormat = new StringFormat();

     myGraphicsPath.AddArc(0, 0, 30, 20, -90, 180);
     myGraphicsPath.StartFigure();
     myGraphicsPath.AddCurve(myPointArray);
     myGraphicsPath.AddString("a string in a path", 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 durchgängig sein muss. Der Bogen, der kardinale Spline, die Zeichenfolge und das Kreissegment sind getrennte Elemente.

Pfade

Siehe auch

Aufgaben

Gewusst wie: Erstellen von Graphics-Objekten zum Zeichnen

Referenz

System.Drawing.Drawing2D.GraphicsPath

System.Drawing.Point

Weitere Ressourcen

Linien, Kurven und Formen

Erstellen und Zeichnen von Pfaden