Offene und geschlossene Kurven in GDI+

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

Screenshot of one open curve and one closed curve.

Verwaltete Schnittstelle für Kurven

Geschlossene Kurven verfügen über einen Innenbereich und können daher mit einem Pinsel gefüllt werden. Die Klasse Graphics in GDI+ bietet die folgenden Methoden zum Füllen von geschlossenen Formen und Kurven: FillRectangle, FillEllipse, FillPie, FillPolygon, FillClosedCurve, FillPath und FillRegion. Wann immer Sie eine dieser Methoden aufrufen, müssen Sie einen der spezifischen Pinseltypen (SolidBrush, HatchBrush, TextureBrush, LinearGradientBrush oder PathGradientBrush) als Argument übergeben.

Die Methode FillPie ist eine Begleitmethode zu DrawArc. So wie die Methode DrawArc einen Teil des Umrisses einer Ellipse zeichnet, füllt die Methode FillPie einen Teil des Innenraums einer Ellipse. Im folgenden Beispiel wird ein Bogen gezeichnet und entsprechende Teil des Innenbereichs der Ellipse 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 den ausgefüllten Bereich.

Screenshot of an arc and the filled pie.

Die Methode FillClosedCurve ist eine Begleitmethode zu DrawClosedCurve. Beide Methoden schließen die Kurve automatisch, indem sie den Endpunkt mit dem Startpunkt 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 Startpunkt (0, 0) verbunden wird, und der Innenbereich wird mit einer Volltonfarbe gefüllt.

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

Die Methode FillPath füllt die Innenbereiche der einzelnen Teile eines Pfads. Wenn ein Teil eines Pfads keine geschlossene Kurve oder Form bildet, schließt die Methode FillPath diesen Teil des Pfads automatisch, bevor er gefüllt wird. Im folgenden Beispiel wird ein Pfad gezeichnet und gefüllt, der aus einem Bogen, einem Cardinal Spline, einer Zeichenfolge und einem Kreisabschnitt besteht:

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

Die folgende Abbildung zeigt den Pfad mit und ohne Volltonfüllung. Beachten Sie, dass der Text in der Zeichenfolge durch die DrawPath-Methode umrandet, aber nicht gefüllt wird. Der Innenbereich der Zeichen in der Zeichenfolge wird mit der Methode FillPath ausgefüllt.

String in a path

Siehe auch