本例效果图:
代码文件:
代码文件:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, ExtCtrls; type TForm1 = class(TForm) TrackBar1: TTrackBar; TrackBar2: TTrackBar; TrackBar3: TTrackBar; TrackBar4: TTrackBar; TrackBar5: TTrackBar; TrackBar6: TTrackBar; procedure FormPaint(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TrackBar1Change(Sender: TObject); procedure TrackBar2Change(Sender: TObject); procedure TrackBar3Change(Sender: TObject); procedure TrackBar4Change(Sender: TObject); procedure TrackBar5Change(Sender: TObject); procedure TrackBar6Change(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} uses GDIPOBJ, GDIPAPI; procedure TForm1.FormCreate(Sender: TObject); begin TrackBar1.Max := 10; TrackBar2.Max := 10; TrackBar3.Max := 10; TrackBar4.Max := 10; TrackBar5.Max := 10; TrackBar6.Max := 10; TrackBar1.Position := TrackBar1.Max; TrackBar2.Position := TrackBar2.Min; TrackBar3.Position := TrackBar3.Max; TrackBar4.Position := TrackBar4.Min; TrackBar5.Position := TrackBar5.Max div 2; TrackBar6.Position := TrackBar6.Max; end; procedure TForm1.FormPaint(Sender: TObject); const pts: array[0..2] of TGPPoint = ((X:120; Y:10), (X:40; Y:140), (X:200;Y:140)); colors: array[0..2] of TGPColor = (aclRed, aclGreen, aclYellow); var g: TGPGraphics; path: TGPGraphicsPath; pb: TGPPathGradientBrush; blendFactors: array[0..2] of Single; pos: array[0..2] of Single; num: Integer; begin g := TGPGraphics.Create(Canvas.Handle); path := TGPGraphicsPath.Create; path.AddPolygon(PGPPoint(@pts), Length(pts)); pb := TGPPathGradientBrush.Create(path); num := Length(colors); pb.SetSurroundColors(@colors, num); {SetBlend 只在设置包围颜色时有效} blendFactors[0] := TrackBar1.Position / 10; blendFactors[1] := TrackBar2.Position / 10; blendFactors[2] := TrackBar3.Position / 10; pos[0] := TrackBar4.Position / 10; pos[1] := TrackBar5.Position / 10; pos[2] := TrackBar6.Position / 10; pb.SetBlend(@blendFactors, Psingle(@pos), Length(blendFactors)); g.FillPath(pb, path); pb.Free; path.Free; g.Free; end; procedure TForm1.TrackBar1Change(Sender: TObject); begin Repaint; end; procedure TForm1.TrackBar2Change(Sender: TObject); begin Repaint; end; procedure TForm1.TrackBar3Change(Sender: TObject); begin Repaint; end; procedure TForm1.TrackBar4Change(Sender: TObject); begin Repaint; end; procedure TForm1.TrackBar5Change(Sender: TObject); begin Repaint; end; procedure TForm1.TrackBar6Change(Sender: TObject); begin Repaint; end; end.窗体文件:
object Form1: TForm1 Left = 0 Top = 0 Caption = 'Form1' ClientHeight = 222 ClientWidth = 242 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 = 152 Width = 105 Height = 23 ShowSelRange = False TabOrder = 0 OnChange = TrackBar1Change end object TrackBar2: TTrackBar Left = 13 Top = 174 Width = 105 Height = 23 ShowSelRange = False TabOrder = 1 OnChange = TrackBar2Change end object TrackBar3: TTrackBar Left = 13 Top = 196 Width = 105 Height = 23 ShowSelRange = False TabOrder = 2 OnChange = TrackBar3Change end object TrackBar4: TTrackBar Left = 125 Top = 152 Width = 105 Height = 23 ShowSelRange = False TabOrder = 3 OnChange = TrackBar4Change end object TrackBar5: TTrackBar Left = 125 Top = 174 Width = 105 Height = 23 ShowSelRange = False TabOrder = 4 OnChange = TrackBar5Change end object TrackBar6: TTrackBar Left = 125 Top = 196 Width = 105 Height = 23 ShowSelRange = False TabOrder = 5 OnChange = TrackBar6Change end end