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

再學GDI+[71]: 路徑漸層筆刷變換大師 - 旋轉、縮放、平移與矩陣綜合操作

     編輯:Delphi

前言

TGPPathGradientBrush 不僅能建立絢麗的漸層效果,更支援完整的幾何變換。本文透過雙軌條(TrackBar)即時控制 旋轉、縮放 參數,展示路徑漸層筆刷的五大變換方法:

  • RotateTransform - 旋轉變換
  • ScaleTransform - 縮放變換
  • TranslateTransform - 平移變換
  • SetTransform - 綜合矩陣變換
  • ResetTransform - 重設變換

互動式範例設計

  • TrackBar1:控制旋轉角度(-50° 至 50°)
  • TrackBar2:控制縮放比例(0.1x 至 1.0x)
  • 即時重繪,所見即所得

核心繪圖邏輯

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