路徑漸層筆刷(TGPPathGradientBrush)是 GDI+ 中最靈活的漸層工具,能根據任意路徑形狀產生從中心向四周輻射的漸層。本文從最基礎的中心色與環繞色設定入手,構建一個可即時調色的互動範例。
| 方法 | 參數 | 說明 | 預設值 |
|---|---|---|---|
SetCenterColor(color) | TGPColor | 設定漸層中心點顏色 | 白色 ($FFFFFFFF) |
SetSurroundColors(colors, count) | PGPColor, Integer | 設定路徑頂點對應的環繞顏色陣列 | 黑色 ($FF000000) |
procedure TForm1.FormPaint(Sender: TObject);
var
g: TGPGraphics;
rect: TGPRect;
path: TGPGraphicsPath;
pb: TGPPathGradientBrush;
ColorArr: array[0..0] of TGPColor;
num: Integer;
begin
rect := MakeRect(20, 10, ClientWidth - 40, ClientHeight - 50);
g := TGPGraphics.Create(Canvas.Handle);
path := TGPGraphicsPath.Create;
path.AddEllipse(rect);
pb := TGPPathGradientBrush.Create(path);
{從色彩按鈕取得顏色}
pb.SetCenterColor(ColorRefToARGB(ButtonColor1.SymbolColor));
ColorArr[0] := ColorRefToARGB(ButtonColor2.SymbolColor);
num := 1;
pb.SetSurroundColors(PARGB(@ColorArr), num);
g.FillEllipse(pb, rect);
pb.Free; path.Free; g.Free;
end;
procedure TForm1.ButtonColor1Click(Sender: TObject);
begin
Repaint; {色彩對話框在元件內部處理,這裡僅觸發重繪}
end;
procedure TForm1.ButtonColor2Click(Sender: TObject);
begin
Repaint;
end;

ColorRefToARGB 將 Delphi TColor 轉為 GDI+ ARGB 格式object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 258
ClientWidth = 208
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 ButtonColor1: TButtonColor ... {兩個 TButtonColor 定義}
end