Freigeben über


Offene und geschlossene Kurven in GDI+

Die folgende Abbildung zeigt zwei Kurven: eine offene und eine geschlossene Kurve.

Offene und geschlossene Kurven

Verwaltete Schnittstelle für Kurven

Geschlossene Kurven weisen eine Innenfläche auf und können daher mit einem Pinsel gefüllt werden. Die Graphics-Klasse in GDI+ enthält die folgenden Methoden zum Füllen geschlossener Formen und Kurven: FillRectangle, FillEllipse, FillPie, FillPolygon, FillClosedCurve, FillPath und FillRegion. Sobald Sie eine dieser Methoden aufrufen, müssen Sie einen bestimmten Pinseltyp (SolidBrush, HatchBrush, TextureBrush, LinearGradientBrush oder PathGradientBrush) als Argument übergeben.

Die FillPie-Methode ist eine Begleitmethode der DrawArc-Methode. Genauso wie die DrawArc-Methode einen Teilabschnitt eines Ellipsenumrisses zeichnet, füllt die FillPie-Methode ein Teilsegment der Innenfläche einer Ellipse. Im folgenden Beispiel wird ein Bogen gezeichnet und der entsprechende Teil der Ellipseninnenfläche gefüllt:

        myGraphics.FillPie(mySolidBrush, 0, 0, 140, 70, 0, 120)
        myGraphics.DrawArc(myPen, 0, 0, 140, 70, 0, 120)

myGraphics.FillPie(mySolidBrush, 0, 0, 140, 70, 0, 120);
myGraphics.DrawArc(myPen, 0, 0, 140, 70, 0, 120);

Die folgende Abbildung zeigt den Bogen und das gefüllte Kreissegment.

Offene und geschlossene Kurven

Die FillClosedCurve-Methode ist eine Begleitmethode der DrawClosedCurve-Methode. Beide Methoden schließen die Kurve automatisch, indem Sie den Endpunkt mit dem Anfangspunkt verbinden. Im folgenden Beispiel wird eine Kurve gezeichnet, die durch die Punkte (0, 0), (60, 20) und (40, 50) verläuft. Anschließend wird die Kurve automatisch geschlossen, indem der Punkt (40, 50) mit dem Anfangspunkt (0, 0) verbunden wird, und die Innenfläche wird mit einer Volltonfarbe gefüllt.

        Dim myPointArray As Point() = _
           {New Point(0, 0), New Point(60, 20), New Point(40, 50)}
        myGraphics.DrawClosedCurve(myPen, myPointArray)
        myGraphics.FillClosedCurve(mySolidBrush, myPointArray)

     Point[] myPointArray =
{ new Point(0, 0), new Point(60, 20), new Point(40, 50) };
     myGraphics.DrawClosedCurve(myPen, myPointArray);
     myGraphics.FillClosedCurve(mySolidBrush, myPointArray);

Die FillPath-Methode füllt die Innenflächen der einzelnen Teilstücke eines Pfades. Wenn ein Teilstück eines Pfades keine geschlossene Kurve oder Form bildet, schließt die FillPath-Methode dieses Teilstück automatisch, bevor sie es füllt. Im folgenden Beispiel wird ein Pfad aus einem Bogen, einem kardinalen Spline, einer Zeichenfolge und einem Kreissegment gezeichnet und gefüllt:

        Dim mySolidBrush As New SolidBrush(Color.Aqua)
        Dim myGraphicsPath As New GraphicsPath()

        Dim myPointArray As Point() = { _
           New Point(15, 20), _
           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.AddCurve(myPointArray)
        myGraphicsPath.AddString("a string in a path", myFontFamily, _
           0, 24, myPointF, myStringFormat)
        myGraphicsPath.AddPie(230, 10, 40, 40, 40, 110)

        myGraphics.FillPath(mySolidBrush, myGraphicsPath)
        myGraphics.DrawPath(myPen, myGraphicsPath)

     SolidBrush mySolidBrush = new SolidBrush(Color.Aqua);
     GraphicsPath myGraphicsPath = new GraphicsPath();

     Point[] myPointArray = {
new Point(15, 20), 
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.AddCurve(myPointArray);
     myGraphicsPath.AddString("a string in a path", myFontFamily,
        0, 24, myPointF, myStringFormat);
     myGraphicsPath.AddPie(230, 10, 40, 40, 40, 110);

     myGraphics.FillPath(mySolidBrush, myGraphicsPath);
     myGraphics.DrawPath(myPen, myGraphicsPath);

Die folgende Abbildung zeigt den Pfad mit und ohne Volltonfüllung. Beachten Sie, dass der Text in der Zeichenfolge durch die DrawPath-Methode zwar mit einem Umriss versehen, jedoch nicht gefüllt wird. Die Innenflächen der Zeichen in der Zeichenfolge werden durch die FillPath-Methode gefüllt.

Zeichenfolge in einem Pfad

Siehe auch

Aufgaben

Gewusst wie: Erstellen von Graphics-Objekten zum Zeichnen

Referenz

System.Drawing.Drawing2D.GraphicsPath

System.Drawing.Pen

System.Drawing.Point

Weitere Ressourcen

Linien, Kurven und Formen

Erstellen und Zeichnen von Pfaden