TGPPathGradientBrush 不僅能建立絢麗的漸層效果,更支援完整的幾何變換。本文透過雙軌條(TrackBar)即時控制 旋轉、縮放 參數,展示路徑漸層筆刷的五大變換方法:
RotateTransform - 旋轉變換ScaleTransform - 縮放變換TranslateTransform - 平移變換SetTransform - 綜合矩陣變換ResetTransform - 重設變換procedure TForm1.FormPaint(Sender: TObject);
const
colors: array[0..3] of TGPColor = (aclRed, aclYellow, aclGreen, aclBlue);
var
g: TGPGraphics;
p: TGPPen;
path: TGPGraphicsPath;
pb: TGPPathGradientBrush;
num: Integer;
begin
g := TGPGraphics.Create(Canvas.Handle);
p := TGPPen.Create(aclRed);
path := TGPGraphicsPath.Create;
path.AddRectangle(MakeRect(50, 20, 120, 100));
pb := TGPPathGradientBrush.Create(path);
num := Length(colors);
pb.SetSurroundColors(@colors, num); {設定四周顏色}
{套用變換 - 旋轉與縮放}
pb.RotateTransform(TrackBar1.Position); {角度}
pb.ScaleTransform(TrackBar2.Position / 10, TrackBar2.Position / 10); {縮放比例}
g.FillPath(pb, path);
g.DrawPath(p, path); {繪製邊框參考}
pb.Free; path.Free; p.Free; g.Free;
end;

| 方法 | 參數說明 | 典型應用場景 |
|---|---|---|
RotateTransform(angle) | angle: Single,角度制 | 建立放射狀旋轉漸層、動畫效果 |
ScaleTransform(sx, sy) | sx, sy: Single,縮放倍率 | 調整漸層範圍、建立橢圓形漸層 |
TranslateTransform(dx, dy) | dx, dy: Single,位移量 | 移動漸層中心點、對齊特定幾何特徵 |
SetTransform(matrix) | matrix: TGPMatrix | 複雜組合變換、動畫插值 |
ResetTransform | 無參數 | 清除所有變換,恢復預設狀態 |
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 165
ClientWidth = 222
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 TrackBar1: TTrackBar
Left = 13
Top = 136
Width = 100
Height = 23
ShowSelRange = False
TabOrder = 0
OnChange = TrackBar1Change
end
object TrackBar2: TTrackBar
Left = 110
Top = 134
Width = 100
Height = 23
ShowSelRange = False
TabOrder = 1
OnChange = TrackBar2Change
end
end