在 Graphics 類別中我們可以直接使用 DrawRectangle, DrawEllipse 等 Draw 開頭的方法繪製空心圖案,和使用 FillRectangle, FillEllipse 等 Fill 開頭的方法繪製填充圖形,那假設要繪製自定義圖形呢?
其實我們可以使用 GraphicsPath,將該圖形的所有邊、弧線定義好,再直接畫上去即可!
例如筆者要繪製積木的「拱橋」形狀:
執行結果:
另外如果要把結束的點和起始點接在一起可以使用下面這行:
CloseFigure 只對 DrawPath 有效,因為如果是 FillPath 的話如果判斷不是封閉圖形時會自動把頭尾座標連起來,不然開放區域沒有辦法「填滿」。
延伸閱讀:
C# Graphics 繪製扇形、弧線
其實我們可以使用 GraphicsPath,將該圖形的所有邊、弧線定義好,再直接畫上去即可!
例如筆者要繪製積木的「拱橋」形狀:
this.Paint += (s, e) =>
{
var graphics = e.Graphics;
var graphicsPath = new System.Drawing.Drawing2D.GraphicsPath();
graphicsPath.AddLines(new Point[]
{
new Point(200, 350),
new Point(100, 350),
new Point(100, 100),
new Point(600, 100),
new Point(600, 350),
new Point(500, 350),
});
graphicsPath.AddArc(200, 200, 300, 300, 0, -180);
// graphics.DrawPath(Pens.Coral, graphicsPath); // 繪製圖形
graphics.FillPath(Brushes.Coral, graphicsPath); // 繪製並填滿圖形
};
執行結果:
另外如果要把結束的點和起始點接在一起可以使用下面這行:
graphicsPath.CloseFigure();
CloseFigure 只對 DrawPath 有效,因為如果是 FillPath 的話如果判斷不是封閉圖形時會自動把頭尾座標連起來,不然開放區域沒有辦法「填滿」。
延伸閱讀:
C# Graphics 繪製扇形、弧線
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com