共用方式為


GDI+ 中的開放型和封閉型曲線

下圖顯示兩條曲線:一條開放,一條封閉。

一條開放曲線和一條封閉曲線的螢幕擷取畫面。

曲線的受控介面

封閉曲線具有內部區域,因此可以使用筆刷填滿。 GDI+ 中的 Graphics 類別提供下列填滿封閉圖形和曲線的方法:FillRectangleFillEllipseFillPieFillPolygonFillClosedCurveFillPathFillRegion。 每當您呼叫其中一個方法時,都必須將其中一個特定的筆刷類型 (SolidBrushHatchBrushTextureBrushLinearGradientBrushPathGradientBrush) 傳遞為引數。

FillPie 方法隨附於 DrawArc 方法。 就像 DrawArc 方法繪製橢圓形外框的一部分一樣,FillPie 方法會填滿橢圓形內部的一部分。 下列範例會繪製弧線,並填滿橢圓形內部的對應部分:

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)

下圖顯示弧線和填滿的扇形。

弧線和填滿扇形的螢幕擷取畫面。

FillClosedCurve 方法隨附於 DrawClosedCurve 方法。 這兩種方法都會將終點連接到起點,以自動關閉曲線。 下列範例繪製一條經過 (0, 0)、(60, 20) 和 (40, 50) 的曲線。 然後,將 (40, 50) 連接到起點 (0, 0) 自動關閉曲線,並且將內部填滿純色。

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)

FillPath 方法會填滿路徑個別片段的內部。 如果某個路徑的片段未形成封閉曲線或圖形,則 FillPath 方法會在填滿路徑之前自動關閉該路徑片段。 下列範例繪製並填滿由弧線、基數曲線、字串和扇形組成的路徑:

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)

下圖顯示具有及不具有實心填滿的路徑。 請注意,字串中的文字以 DrawPath 方法加上外框,但未填滿。 繪製字串中字元內部的是 FillPath 方法。

路徑中的字串

另請參閱