TGPHatchBrush 提供 56 種預定義的陰影圖案,涵蓋線條、網格、磚塊、波浪、百分比網點等豐富樣式,適用於工程繪圖、統計圖表、CAD 應用等場景。每種圖案支援獨立設定前景色與背景色。
TGPHatchBrush.Create(
hatchStyle: THatchStyle; { 陰影樣式 }
foreColor: TGPColor; { 前景色 }
backColor: TGPColor = aclBlack { 背景色,預設黑色 }
);
完整互動範例:下拉選單列出所有 56 種 HatchStyle,兩個 ColorBox 分別選取前景/背景色:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
ColorBox1: TColorBox;
ColorBox2: TColorBox;
ComboBox1: TComboBox;
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure ColorBox1Change(Sender: TObject);
procedure ColorBox2Change(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses GDIPOBJ, GDIPAPI, TypInfo;
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
{ 列舉所有 HatchStyle 項目 }
for i := 0 to Integer(HatchStyleTotal) - 1 do
ComboBox1.Items.Add(GetEnumName(TypeInfo(HatchStyle), i));
ComboBox1.ItemIndex := 0;
ColorBox1.ItemIndex := 16;
ColorBox2.ItemIndex := 3;
end;
procedure TForm1.FormPaint(Sender: TObject);
var
g: TGPGraphics;
r: TGPRect;
hb: TGPHatchBrush;
fColor, bColor: TGPColor;
hbStyle: HatchStyle;
begin
g := TGPGraphics.Create(Canvas.Handle);
g.Clear(MakeColor(255, 255, 255));
r := MakeRect(20, 60, ClientWidth - 40, ClientHeight - 70);
hbStyle := HatchStyle(ComboBox1.ItemIndex);
fColor := ColorRefToARGB(ColorBox1.Selected);
bColor := ColorRefToARGB(ColorBox2.Selected);
hb := TGPHatchBrush.Create(hbStyle, fColor, bColor);
g.FillEllipse(hb, r);
hb.Free;
g.Free;
end;
procedure TForm1.ColorBox1Change(Sender: TObject); begin Repaint; end;
procedure TForm1.ColorBox2Change(Sender: TObject); begin Repaint; end;
procedure TForm1.ComboBox1Change(Sender: TObject); begin Repaint; end;
end.
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 206
ClientWidth = 268
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 ColorBox1: TColorBox
Left = 48
Top = 30
Width = 100
Height = 22
ItemHeight = 16
TabOrder = 0
OnChange = ColorBox1Change
end
object ColorBox2: TColorBox
Left = 160
Top = 30
Width = 100
Height = 22
ItemHeight = 16
TabOrder = 1
OnChange = ColorBox2Change
end
object ComboBox1: TComboBox
Left = 48
Top = 3
Width = 212
Height = 21
ItemHeight = 13
TabOrder = 2
Text = 'ComboBox1'
OnChange = ComboBox1Change
end
end

| Delphi 常數 | Microsoft 對應 | 說明 |
|---|---|---|
| HatchStyleHorizontal | Horizontal | 水平線 |
| HatchStyleVertical | Vertical | 垂直線 |
| HatchStyleForwardDiagonal | ForwardDiagonal | 左上到右下對角線 |
| HatchStyleBackwardDiagonal | BackwardDiagonal | 右上到左下對角線 |
| HatchStyleCross | Cross | 交叉水平垂直線 |
| HatchStyleDiagonalCross | DiagonalCross | 交叉對角線 |
| HatchStylePercent05 ~ Percent90 | Percent05 ~ Percent90 | 5%~90% 網點 (10 種) |
| HatchStyleLightHorizontal | LightHorizontal | 淡水平線 |
| HatchStyleLightVertical | LightVertical | 淡垂直線 |
| HatchStyleLightDownwardDiagonal | LightDownwardDiagonal | 淡向下對角線 |
| HatchStyleLightUpwardDiagonal | LightUpwardDiagonal | 淡向上對角線 |
| HatchStyleDarkHorizontal | DarkHorizontal | 深水平線 |
| HatchStyleDarkVertical | DarkVertical | 深垂直線 |
| HatchStyleDarkDownwardDiagonal | DarkDownwardDiagonal | 深向下對角線 |
| HatchStyleDarkUpwardDiagonal | DarkUpwardDiagonal | 深向上對角線 |
| HatchStyleDashedHorizontal | DashedHorizontal | 虛水平線 |
| HatchStyleDashedVertical | DashedVertical | 虛垂直線 |
| HatchStyleDashedDownwardDiagonal | DashedDownwardDiagonal | 虛向下對角線 |
| HatchStyleDashedUpwardDiagonal | DashedUpwardDiagonal | 虛向上對角線 |
| HatchStyleHorizontalBrick | HorizontalBrick | 水平磚塊 |
| HatchStyleDiagonalBrick | DiagonalBrick | 對角磚塊 |
| HatchStyleShingle | Shingle | 鵝卵石 |
| HatchStyleTrellis | Trellis | 格架 |
| HatchStyleSphere | Sphere | 球體 |
| HatchStyleSmallGrid | SmallGrid | 小網格 |
| HatchStyleLargeGrid | LargeGrid | 大網格 |
| HatchStyleSmallCheckerBoard | SmallCheckerBoard | 小棋盤 |
| HatchStyleLargeCheckerBoard | LargeCheckerBoard | 大棋盤 |
| HatchStyleOutlinedDiamond | OutlinedDiamond | 輪廓菱形 |
| HatchStyleSolidDiamond | SolidDiamond | 實心菱形 |
| HatchStyleDottedGrid | DottedGrid | 點狀網格 |
| HatchStyleDottedDiamond | DottedDiamond | 點狀菱形 |
| HatchStylePlaid | Plaid | 格子呢 |
| HatchStyleWeave | Weave | 織物 |
| HatchStyleDivot | Divot | 草皮 |
| HatchStyleWave | Wave | 波浪線 |
| HatchStyleZigZag | ZigZag | Z 字形 |
| HatchStyleSmallConfetti | SmallConfetti | 小彩紙 |
| HatchStyleLargeConfetti | LargeConfetti | 大彩紙 |
| HatchStyleNarrowHorizontal | NarrowHorizontal | 窄水平線 |
| HatchStyleNarrowVertical | NarrowVertical | 窄垂直線 |
| HatchStyleWideDownwardDiagonal | WideDownwardDiagonal | 寬向下對角線 |
| HatchStyleWideUpwardDiagonal | WideUpwardDiagonal | 寬向上對角線 |
| HatchStyleMin/Max | Min/Max | 最小/最大值別名 |
善用陰影筆刷可避免大面積純色填充的單調感,並在列印文件中節省墨水。