TGPLinearGradientBrush.Create( rect: TGPRect; {线性渐变的界限} color1, color2: TGPColor; {线性渐变起始色与终止色} mode: TLinearGradientMode {渐变方向, 见下表} ); TGPLinearGradientBrush.Create( rect: TGPRectF; color1, color2: TGPColor; mode: TLinearGradientMode );本例效果图:
代码文件:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, TeCanvas; type TForm1 = class(TForm) ComboBox1: TComboBox; ButtonColor1: TButtonColor; ButtonColor2: TButtonColor; procedure FormCreate(Sender: TObject); procedure FormPaint(Sender: TObject); procedure ButtonColor1Click(Sender: TObject); procedure ButtonColor2Click(Sender: TObject); procedure ComboBox1Change(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} uses GDIPOBJ, GDIPAPI, TypInfo; procedure TForm1.FormCreate(Sender: TObject); var i: Integer; begin for i := 0 to 3 do ComboBox1.Items.Add(GetEnumName(TypeInfo(TLinearGradientMode), i)); ComboBox1.ItemIndex := 1; ButtonColor1.Caption := '色1 '; ButtonColor2.Caption := '色2 '; ButtonColor1.SymbolColor := clYellow; ButtonColor2.SymbolColor := clRed; end; procedure TForm1.FormPaint(Sender: TObject); var g: TGPGraphics; lb: TGPLinearGradientBrush; c1,c2: TGPColor; r: TGPRect; begin g := TGPGraphics.Create(Canvas.Handle); r := MakeRect(60, 40, ClientWidth - 120, ClientHeight - 50); c1 := ColorRefToARGB(ButtonColor1.SymbolColor); c2 := ColorRefToARGB(ButtonColor2.SymbolColor); lb := TGPLinearGradientBrush.Create(r, c1, c2, TLinearGradientMode(ComboBox1.ItemIndex)); g.FillEllipse(lb, r); lb.Free; g.Free; end; procedure TForm1.ButtonColor1Click(Sender: TObject); begin Repaint; end; procedure TForm1.ButtonColor2Click(Sender: TObject); begin Repaint; end; procedure TForm1.ComboBox1Change(Sender: TObject); begin Repaint; end; end.窗体文件:
object Form1: TForm1 Left = 0 Top = 0 Caption = 'Form1' ClientHeight = 197 ClientWidth = 309 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False Position = poScreenCenter OnCreate = FormCreate OnPaint = FormPaint PixelsPerInch = 96 TextHeight = 13 object ComboBox1: TComboBox Left = 113 Top = 6 Width = 192 Height = 21 ItemHeight = 13 TabOrder = 0 Text = 'ComboBox1' OnChange = ComboBox1Change end object ButtonColor1: TButtonColor Left = 5 Top = 4 Width = 49 Caption = 'ButtonColor1' TabOrder = 1 OnClick = ButtonColor1Click end object ButtonColor2: TButtonColor Left = 58 Top = 4 Width = 49 Caption = 'ButtonColor2' TabOrder = 2 OnClick = ButtonColor2Click end end线性渐变的方向参数:
Delphi | 微软 | 说明 |
---|---|---|
LinearGradientModeHorizontal | Horizontal | 指定从左到右的渐变。 |
LinearGradientModeVertical | Vertical | 指定从上到下的渐变。 |
LinearGradientModeForwardDiagonal | ForwardDiagonal | 指定从左上到右下的渐变。 |
LinearGradientModeBackwardDiagonal | BackwardDiagonal | 指定从右上到左下的渐变。 |