再学 GDI+[68]: 路径画刷(8) - SetBlendTriangularShaped、SetBlendBellShape
生活随笔
收集整理的這篇文章主要介紹了
再学 GDI+[68]: 路径画刷(8) - SetBlendTriangularShaped、SetBlendBellShape
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本例效果圖(顏色失真嚴重, 因為 GIF 最多只能接受 256 中顏色):
代碼文件:
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ComCtrls, StdCtrls, ExtCtrls;typeTForm1 = class(TForm)TrackBar1: TTrackBar;TrackBar2: TTrackBar;RadioGroup1: TRadioGroup;procedure FormCreate(Sender: TObject);procedure FormPaint(Sender: TObject);procedure RadioGroup1Click(Sender: TObject);procedure TrackBar1Change(Sender: TObject);procedure TrackBar2Change(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}uses GDIPOBJ, GDIPAPI;procedure TForm1.FormCreate(Sender: TObject); beginTrackBar1.Max := 100;TrackBar2.Max := 100;TrackBar1.Position := TrackBar1.Max;TrackBar2.Position := TrackBar2.Max;TrackBar1.ShowSelRange := False;TrackBar2.ShowSelRange := False;TrackBar1.Height := 23;TrackBar2.Height := 23;RadioGroup1.Items.CommaText := 'BlendTriangularShape, SetBlendBellShape';RadioGroup1.ItemIndex := 0;DoubleBuffered := True; end;procedure TForm1.FormPaint(Sender: TObject); constcolors: array[0..0] of TGPColor = (aclRed); varg: TGPGraphics;path: TGPGraphicsPath;pb: TGPPathGradientBrush;num: Integer; beging := TGPGraphics.Create(Canvas.Handle);path := TGPGraphicsPath.Create;path.AddRectangle(MakeRect(30,10,160,150));pb:= TGPPathGradientBrush.Create(path);num := Length(colors);pb.SetSurroundColors(@colors, num);pb.SetCenterColor(aclYellow);{SetBlendTriangularShape 與 SetBlendBellShape 參數2的默認值都是 1.0}case RadioGroup1.ItemIndex of0: pb.SetBlendTriangularShape(TrackBar1.Position/100, TrackBar2.Position/100);1: pb.SetBlendBellShape(TrackBar1.Position/100, TrackBar2.Position/100);end;g.FillPath(pb, path);pb.Free;path.Free;g.Free; end;procedure TForm1.RadioGroup1Click(Sender: TObject); beginRepaint; end;procedure TForm1.TrackBar1Change(Sender: TObject); beginRepaint; end;procedure TForm1.TrackBar2Change(Sender: TObject); beginRepaint; end;end. 窗體文件:
object Form1: TForm1Left = 0Top = 0Caption = 'Form1'ClientHeight = 261ClientWidth = 221Color = clBtnFaceFont.Charset = DEFAULT_CHARSETFont.Color = clWindowTextFont.Height = -11Font.Name = 'Tahoma'Font.Style = []OldCreateOrder = FalsePosition = poDesktopCenterOnCreate = FormCreateOnPaint = FormPaintPixelsPerInch = 96TextHeight = 13object TrackBar1: TTrackBarLeft = 0Top = 167Width = 113Height = 45TabOrder = 0OnChange = TrackBar1Changeendobject TrackBar2: TTrackBarLeft = 108Top = 167Width = 113Height = 45TabOrder = 1OnChange = TrackBar2Changeendobject RadioGroup1: TRadioGroupLeft = 8Top = 192Width = 206Height = 61Caption = 'RadioGroup1'TabOrder = 2OnClick = RadioGroup1Clickend end
代碼文件:
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ComCtrls, StdCtrls, ExtCtrls;typeTForm1 = class(TForm)TrackBar1: TTrackBar;TrackBar2: TTrackBar;RadioGroup1: TRadioGroup;procedure FormCreate(Sender: TObject);procedure FormPaint(Sender: TObject);procedure RadioGroup1Click(Sender: TObject);procedure TrackBar1Change(Sender: TObject);procedure TrackBar2Change(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}uses GDIPOBJ, GDIPAPI;procedure TForm1.FormCreate(Sender: TObject); beginTrackBar1.Max := 100;TrackBar2.Max := 100;TrackBar1.Position := TrackBar1.Max;TrackBar2.Position := TrackBar2.Max;TrackBar1.ShowSelRange := False;TrackBar2.ShowSelRange := False;TrackBar1.Height := 23;TrackBar2.Height := 23;RadioGroup1.Items.CommaText := 'BlendTriangularShape, SetBlendBellShape';RadioGroup1.ItemIndex := 0;DoubleBuffered := True; end;procedure TForm1.FormPaint(Sender: TObject); constcolors: array[0..0] of TGPColor = (aclRed); varg: TGPGraphics;path: TGPGraphicsPath;pb: TGPPathGradientBrush;num: Integer; beging := TGPGraphics.Create(Canvas.Handle);path := TGPGraphicsPath.Create;path.AddRectangle(MakeRect(30,10,160,150));pb:= TGPPathGradientBrush.Create(path);num := Length(colors);pb.SetSurroundColors(@colors, num);pb.SetCenterColor(aclYellow);{SetBlendTriangularShape 與 SetBlendBellShape 參數2的默認值都是 1.0}case RadioGroup1.ItemIndex of0: pb.SetBlendTriangularShape(TrackBar1.Position/100, TrackBar2.Position/100);1: pb.SetBlendBellShape(TrackBar1.Position/100, TrackBar2.Position/100);end;g.FillPath(pb, path);pb.Free;path.Free;g.Free; end;procedure TForm1.RadioGroup1Click(Sender: TObject); beginRepaint; end;procedure TForm1.TrackBar1Change(Sender: TObject); beginRepaint; end;procedure TForm1.TrackBar2Change(Sender: TObject); beginRepaint; end;end. 窗體文件:
object Form1: TForm1Left = 0Top = 0Caption = 'Form1'ClientHeight = 261ClientWidth = 221Color = clBtnFaceFont.Charset = DEFAULT_CHARSETFont.Color = clWindowTextFont.Height = -11Font.Name = 'Tahoma'Font.Style = []OldCreateOrder = FalsePosition = poDesktopCenterOnCreate = FormCreateOnPaint = FormPaintPixelsPerInch = 96TextHeight = 13object TrackBar1: TTrackBarLeft = 0Top = 167Width = 113Height = 45TabOrder = 0OnChange = TrackBar1Changeendobject TrackBar2: TTrackBarLeft = 108Top = 167Width = 113Height = 45TabOrder = 1OnChange = TrackBar2Changeendobject RadioGroup1: TRadioGroupLeft = 8Top = 192Width = 206Height = 61Caption = 'RadioGroup1'TabOrder = 2OnClick = RadioGroup1Clickend end
總結
以上是生活随笔為你收集整理的再学 GDI+[68]: 路径画刷(8) - SetBlendTriangularShaped、SetBlendBellShape的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 绘制网络拓扑图的素材
- 下一篇: [导入]php 安全基础 附录C. 加密