首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# GDI+ 繪圖:自訂 AdjustableArrowCap 實現箭頭大小可控的直線

     編輯:關於C#

問題背景

使用 Pen 繪製帶箭頭的直線時,預設箭頭大小隨線寬縮放,常導致:

  • 細線時箭頭過小難以辨識。
  • 粗線時箭頭過大顯得突兀。

System.Drawing.Drawing2D.AdjustableArrowCap 類別允許獨立控制箭頭尺寸,完美解決此問題。

核心代碼

using System.Drawing;
using System.Drawing.Drawing2D;

// 建立可調整箭頭:寬度 6、高度 6、isFilled=true (實心箭頭)
var arrowCap = new AdjustableArrowCap(6, 6, true);

// 建立畫筆:紅色、寬度 2
using (var pen = new Pen(Color.Red, 2))
{
    // 關鍵:指定 CustomEndCap 為自訂箭頭
    pen.CustomEndCap = arrowCap;

    // 繪製直線(起點 10,10 → 終點 200,100)
    graphics.DrawLine(pen, 10, 10, 200, 100);
}

參數詳細說明

參數類型含義
widthfloat箭頭底邊寬度(垂直於線條方向)
heightfloat箭頭長度(沿線條方向)
isFilledbooltrue = 實心填充;false = 僅繪製輪廓
middleInsetfloat (可選)箭頭中間凹陷程度,預設 0,值越大凹陷越明顯

完整範例:在 WinForms Paint 事件中繪製

private void Form1_Paint(object sender, PaintEventArgs e)
{
    using (var pen = new Pen(Color.Blue, 3))
    {
        // 箭頭:寬 10、高 12、實心、中間微凹
        pen.CustomEndCap = new AdjustableArrowCap(10, 12, true, 2f);
        
        e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; // 抗鋸齒
        e.Graphics.DrawLine(pen, 50, 50, 300, 200);
    }
}

進階技巧:雙向箭頭

同時設定 CustomStartCap 與 CustomEndCap 即可繪製雙向箭頭:

pen.CustomStartCap = new AdjustableArrowCap(8, 8, true);
pen.CustomEndCap   = new AdjustableArrowCap(8, 8, true);

總結

AdjustableArrowCap 讓箭頭尺寸與線寬解耦,配合 Pen.CustomStartCap/EndCap,輕鬆實現專業級技術繪圖效果。記得在 using 區塊或手動 Dispose() 釋放 Pen 與 Graphics 資源。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved