共用方式為


GDI+ 中的圖形路徑

更新:2007 年 11 月

路徑是由組合的線條、矩形和簡單曲線形成。回顧向量圖形概觀一節的說明,下列基本的建置區塊已被證明為最有效的繪製圖片方法:

  • 線條

  • 矩形

  • 橢圓形

  • 弧形

  • 多邊形

  • 基本曲線

  • 貝茲曲線

在 GDI+ 中,GraphicsPath 物件可將這些建置區塊序列收集成為一個單位。您只需呼叫一次 Graphics 類別的 DrawPath 方法,便可繪製線條、矩形、多邊形和曲線之完整序列。下列圖例顯示組合線條、弧形、貝茲曲線和基本曲線而建立的路徑。

路徑

使用路徑

GraphicsPath 類別提供下列方法,可用來建立一連串要繪製的項目:AddLineAddRectangleAddEllipseAddArcAddPolygonAddCurve (用於基本曲線) 和 AddBezier。這些方法都為多載;也就是說,所有方法都支援數個不同的參數清單。例如,AddLine 方法的其中一個變異可接收四個整數,而 AddLine 方法的另一個變異則可接收兩個 Point 物件。

將線條、矩形和貝茲曲線加入至路徑的方法,包含許多可在單一呼叫中將數個項目加入至路徑的搭配方法:AddLinesAddRectanglesAddBeziers。此外,AddCurveAddArc 方法具有 AddClosedCurve 以及 AddPie 兩個搭配方法,它們可將封閉曲線或派形圖加入至路徑。

若要繪製路徑,您需要 Graphics 物件、Pen 物件和 GraphicsPath 物件。Graphics 物件提供 DrawPath 方法,而 Pen 物件則是儲存用來產生路徑的線條屬性,例如寬度和色彩。GraphicsPath 物件可儲存組成路徑的線條和曲線序列。Pen 物件和 GraphicsPath 物件會當成引數傳遞至 DrawPath 方法。下列範例繪製由線條、橢圓形和貝茲曲線組成的路徑:

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

下圖將顯示該路徑。

路徑

除了將線條、矩形和曲線加入到路徑,您也可以將其他路徑新增到路徑中。您可以將現有的路徑結合成為大型的複雜路徑。

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

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

另外還有兩個項目可加入至路徑中:字串和派形圖。扇形圖是指橢圓形的內景部分。下列範例從弧形、基本曲線、字串和圓形圖建立路徑:

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

下圖將顯示該路徑。請注意,路徑並不一定要連接起來;弧形、基本曲線、字串和圓形圖是個別分開的。

路徑

請參閱

工作

HOW TO:建立繪製的圖形物件

參考

System.Drawing.Drawing2D.GraphicsPath

System.Drawing.Point

其他資源

線條、曲線和形狀

建構和繪製路徑