首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

再學GDI+[61]: 路徑漸層筆刷入門 - SetCenterColor、SetSurroundColors 基礎顏色設定

     編輯:Delphi

前言

路徑漸層筆刷(TGPPathGradientBrush)是 GDI+ 中最靈活的漸層工具,能根據任意路徑形狀產生從中心向四周輻射的漸層。本文從最基礎的中心色與環繞色設定入手,構建一個可即時調色的互動範例。

核心顏色設定方法

方法參數說明預設值
SetCenterColor(color)TGPColor設定漸層中心點顏色白色 ($FFFFFFFF)
SetSurroundColors(colors, count)PGPColor, Integer設定路徑頂點對應的環繞顏色陣列黑色 ($FF000000)

雙色選擇器互動介面

  • ButtonColor1:選擇中心色(預設綠)
  • ButtonColor2:選擇環繞色(預設系統色)
  • 點擊按鈕開啟色彩對話框,確認後即時重繪

完整實作程式碼

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;

執行效果預覽

基礎漸層顏色設定

新手必知關鍵點

  1. 路徑決定形狀:漸層範圍與形狀完全由建立筆刷時的路徑決定
  2. 單一環繞色:陣列長度為 1 時,整個路徑邊緣使用同一顏色
  3. 多環繞色:陣列長度需與路徑頂點數一致,一一對應
  4. 顏色轉換:ColorRefToARGB 將 Delphi TColor 轉為 GDI+ ARGB 格式
  5. 資源管理:筆刷、路徑、Graphics 皆需成對 Create/Free

表單定義檔

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
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved