GDI+ 允許開發者使用 TGPCustomLineCap 定義完全自訂的線帽形狀。本文示範以路徑建立「小矩形起始帽」與「小三角形終止帽」,並透過滑鼠繪製線條即時套用效果。
TGPGraphicsPathTGPCustomLineCap.Create(startPath, endPath) 建立線帽物件pen.SetCustomStartCap/SetCustomEndCap 套用至畫筆var
ph1, ph2: TGPGraphicsPath; {線帽路徑}
cap1, cap2: TGPCustomLineCap; {線帽物件}
x1, y1, x2, y2: Integer;
f: Boolean; PenColor: TColor;
procedure TForm1.FormCreate(Sender: TObject);
const pts: array[0..2] of TGPPoint = ((X:-3;Y:0),(X:3;Y:0),(X:0;Y:3));
begin
ph1 := TGPGraphicsPath.Create; ph1.AddRectangle(MakeRect(-2, 0, 4, 3)); {起始: 小矩形}
ph2 := TGPGraphicsPath.Create; ph2.AddPolygon(PGPPoint(@pts), 3); {終止: 小三角形}
cap1 := TGPCustomLineCap.Create(nil, ph1); {無起始帽、有終止帽}
cap2 := TGPCustomLineCap.Create(nil, ph2);
end;
procedure TForm1.FormMouseUp(Sender: TObject; ...);
var g: TGPGraphics; p: TGPPen;
begin
if not f then Exit; f := False;
g := TGPGraphics.Create(Canvas.Handle);
p := TGPPen.Create(ColorRefToARGB(PenColor), 3);
p.SetCustomStartCap(cap1); {套用自訂起始帽}
p.SetCustomEndCap(cap2); {套用自訂終止帽}
g.DrawLine(p, x1, y1, x2, y2);
p.Free; g.Free;
end;

object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 193
ClientWidth = 296
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poDesktopCenter
OnCreate = FormCreate
OnDestroy = FormDestroy
OnMouseDown = FormMouseDown
OnMouseMove = FormMouseMove
OnMouseUp = FormMouseUp
PixelsPerInch = 96
TextHeight = 13
end