CloseFigure 是控制路徑開放與閉合的關鍵方法。開放路徑僅能描邊,閉合路徑才能填充。本文以簡單三角形折線為例,示範 CloseFigure 對描邊與填充的雙重影響。
procedure TForm1.FormPaint(Sender: TObject);
var
g: TGPGraphics;
path: TGPGraphicsPath;
p: TGPPen;
b: TGPBrush;
pt1, pt2, pt3: TGPPoint;
begin
pt1 := MakePoint(0, ClientHeight div 2);
pt2 := MakePoint(ClientWidth div 2, 0);
pt3 := MakePoint(ClientWidth, ClientHeight div 2);
g := TGPGraphics.Create(Canvas.Handle);
path := TGPGraphicsPath.Create;
path.AddLine(pt1, pt2);
path.AddLine(pt2, pt3); {缺少 pt3→pt1 的閉合線}
if CheckBox1.Checked then path.CloseFigure; {補上閉合線}
p := TGPPen.Create(aclRed, 2);
b := TGPSolidBrush.Create(aclYellow);
if CheckBox2.Checked then g.FillPath(b, path); {僅閉合時有效}
g.DrawPath(p, path); {描邊總是有效}
b.Free; p.Free; path.Free; g.Free;
end;

| CloseFigure | FillPath | 描邊結果 | 填充結果 | 說明 |
|---|---|---|---|---|
| 否 | 否 | V 形開放折線 | 無 | 基礎開放路徑 |
| 是 | 否 | 三角形閉合邊框 | 無 | 閉合但未填充 |
| 否 | 是 | V 形開放折線 | 無/錯誤 | 開放路徑無法填充 |
| 是 | 是 | 三角形閉合邊框 | 黃色實心三角形 | 正確閉合填充 |
CloseFigure 或 CloseAllFiguresAddRectangle、AddEllipse 等內建方法自動閉合,無需手動呼叫AddString 產生的字形路徑已正確閉合所有輪廓object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 179
ClientWidth = 243
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poDesktopCenter
OnCreate = FormCreate
OnPaint = FormPaint
PixelsPerInch = 96
TextHeight = 13
object CheckBox1: TCheckBox ... {閉合路徑 / 填充路徑}
end