TCanvas 公開介面完整參考:42 個方法/函數、11 個屬性、2 個事件
TCanvas 是 Delphi 繪圖核心類,封裝 Windows GDI 提供跨平台一致的繪圖介面。本文整理其所有公開成員,按類型分類,供快速查閱與 API 設計參考。
過程 (Procedures) — 23 個
Arc
BrushCopy
Chord
CopyRect
Draw
DrawFocusRect
Ellipse
FillRect
FloodFill
FrameRect
LineTo
Lock
MoveTo
Pie
Polygon
Polyline
PolyBezier
PolyBezierTo
Rectangle
Refresh
RoundRect
StretchDraw
TextOut
TextRect
Unlock
函數 (Functions) — 5 個
HandleAllocated // 返回 Canvas.Handle 是否有效
TextExtent // 返回文字範圍 TSize (寬高)
TextHeight // 返回文字高度 (含行距)
TextWidth // 返回文字寬度
TryLock // 嘗試鎖定 Canvas,非阻塞
屬性 — 11 個
| 屬性 | 類型 | 說明 |
| ClipRect | TRect | 當前裁剪矩形 (唯讀) |
| Handle | HDC | 底層 GDI 裝置上下文句柄 |
| LockCount | Integer | 鎖定計數 (Lock/Unlock 配對) |
| CanvasOrientation | TCanvasOrientation | 座標系統方向 (coLeftToRight/coRightToLeft) |
| PenPos | TPoint | 當前筆位置 (MoveTo/LineTo 更新) |
| Pixels[X,Y] | TColor | 像素顏色讀寫 (慢,大量操作用 ScanLine) |
| TextFlags | Longint | 文字輸出標誌 (ETO_* 組合) |
| Brush | TBrush | 畫刷對象 (填充屬性) |
| CopyMode | TCopyMode | 位圖複製模式 (cmSrcCopy/cmSrcAnd 等) |
| Font | TFont | 字體對象 (文字屬性) |
| Pen | TPen | 畫筆對象 (線條屬性) |
事件 — 2 個
OnChange // Canvas 狀態改變時觸發 (Pen/Brush/Font 等屬性變更)
OnChanging // Canvas 狀態即將改變時觸發 (可攔截/修改)
核心方法分類速查
| 類別 | 方法 |
| 直線/移動 | MoveTo, LineTo |
| 矩形/圓角 | Rectangle, RoundRect, FillRect, FrameRect |
| 橢圓/圓弧 | Ellipse, Arc, Chord, Pie |
| 多邊形/曲線 | Polygon, Polyline, PolyBezier, PolyBezierTo |
| 位圖/圖像 | Draw, StretchDraw, BrushCopy, CopyRect |
| 文字輸出 | TextOut, TextRect, TextExtent, TextWidth, TextHeight |
| 填充/染色 | FloodFill, FillRect |
| 鎖定/同步 | Lock, Unlock, TryLock, Refresh |
| 焦點/特殊 | DrawFocusRect |
關鍵屬性使用提示
- Handle:需呼叫 WinAPI 時使用,
HandleAllocated 先檢查有效性
- PenPos:
MoveTo 更新,LineTo 更新,僅讀
- ClipRect:受
SelectClipRgn 影響,繪圖自動裁剪
- Pixels:單像素讀寫極慢,大面積用
ScanLine (TBitmap) 或 BitBlt
- Lock/Unlock:多執行緒共用 Canvas 時保護,
TryLock 非阻塞版
事件驅動繪圖模式
type
TMyCanvas = class(TCanvas)
protected
procedure Changed; override;
procedure Changing; override;
end;
procedure TMyCanvas.Changed;
begin
inherited;
if Assigned(OnChange) then OnChange(Self);
// 可在此同步更新 UI、記錄操作歷史等
end;
版本差異提示
- D2009+:
TextRect 重載增加 TTextFormat 參數版本
- D10+:
CanvasOrientation 支援 RTL 佈局
- FMX:
TCanvas 為抽象類,具體實現為 TBitmapCanvas/TContext3D 等
熟記 TCanvas 這 42+11+2 成員的分類與核心用法,能在繪圖開發中快速定位所需 API,避免重複造輪子。
- 上一篇文章: Delphi 繪圖入門:Canvas、Pen、Brush 基礎操作與直線矩形範例
- 下一篇文章: Delphi DLL 函數靜態與動態加載完整指南
Copyright ©
程式碼之家 All Rights Reserved