再学 GDI+[54]: 路径 - Transform
2008-06-20 00:48
295 查看
本例效果图:
代码文件:
窗体文件:
代码文件:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Panel1: TPanel; Button1: TButton; TrackBar1: TTrackBar; TrackBar2: TTrackBar; TrackBar3: TTrackBar; TrackBar4: TTrackBar; TrackBar5: TTrackBar; TrackBar6: TTrackBar; PaintBox1: TPaintBox; 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); procedure PaintBox1Paint(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} uses GDIPOBJ, GDIPAPI; procedure TForm1.FormCreate(Sender: TObject); const n = 40; begin TrackBar1.Min := -n; TrackBar1.Max := n; TrackBar2.Min := -n; TrackBar2.Max := n; TrackBar3.Min := -n; TrackBar3.Max := n; TrackBar4.Min := -n; TrackBar4.Max := n; TrackBar5.Min := -n; TrackBar5.Max := n; TrackBar6.Min := -n; TrackBar6.Max := n; TrackBar1.Position := 10; TrackBar2.Position := 0; TrackBar3.Position := 0; TrackBar4.Position := 10; TrackBar5.Position := 0; TrackBar6.Position := 0; Button1.OnClick := FormCreate; end; procedure TForm1.PaintBox1Paint(Sender: TObject); var g: TGPGraphics; p: TGPPen; b: TGPBrush; path: TGPGraphicsPath; matrix: TGPMatrix; fontFamily: TGPFontFamily; StringFormat: TGPStringFormat; rect: TGPRect; begin rect := MakeRect(20, 20, 180, 120); g := TGPGraphics.Create(PaintBox1.Canvas.Handle); p := TGPPen.Create(aclYellowGreen, 1); b := TGPHatchBrush.Create(HatchStyleSmallGrid, aclSilver, aclYellowGreen); fontFamily := TGPFontFamily.Create('Arial Black'); StringFormat := TGPStringFormat.Create; StringFormat.SetAlignment(StringAlignmentCenter); StringFormat.SetLineAlignment(StringAlignmentCenter); path := TGPGraphicsPath.Create; path.AddRectangle(rect); path.AddEllipse(rect); path.AddString('ABC', -1, fontFamily, FontStyleRegular, 60, rect, StringFormat); matrix := TGPMatrix.Create; matrix.SetElements(TrackBar1.Position / 10, TrackBar2.Position / 10, TrackBar3.Position / 10, TrackBar4.Position / 10, TrackBar5.Position * 10, TrackBar6.Position * 10); path.Transform(matrix); g.FillPath(b, path); g.DrawPath(p, path); path.Free; StringFormat.Free; fontFamily.Free; b.Free; p.Free; g.Free; end; procedure TForm1.TrackBar1Change(Sender: TObject); begin PaintBox1.Repaint; end; procedure TForm1.TrackBar2Change(Sender: TObject); begin PaintBox1.Repaint; end; procedure TForm1.TrackBar3Change(Sender: TObject); begin PaintBox1.Repaint; end; procedure TForm1.TrackBar4Change(Sender: TObject); begin PaintBox1.Repaint; end; procedure TForm1.TrackBar5Change(Sender: TObject); begin PaintBox1.Repaint; end; procedure TForm1.TrackBar6Change(Sender: TObject); begin PaintBox1.Repaint; end; end.
窗体文件:
object Form1: TForm1 Left = 0 Top = 0 Caption = 'Form1' ClientHeight = 172 ClientWidth = 336 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False Position = poDesktopCenter OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object PaintBox1: TPaintBox Left = 0 Top = 0 Width = 237 Height = 172 Align = alClient OnPaint = PaintBox1Paint ExplicitLeft = 120 ExplicitTop = 48 ExplicitWidth = 105 ExplicitHeight = 105 end object Panel1: TPanel Left = 237 Top = 0 Width = 99 Height = 172 Align = alRight TabOrder = 0 ExplicitLeft = 225 ExplicitHeight = 170 object Button1: TButton Left = 14 Top = 10 Width = 75 Height = 25 Caption = #21021#22987#21270 TabOrder = 0 end object TrackBar1: TTrackBar Left = 0 Top = 37 Width = 100 Height = 20 ShowSelRange = False TabOrder = 1 OnChange = TrackBar1Change end object TrackBar2: TTrackBar Left = 0 Top = 59 Width = 100 Height = 20 ShowSelRange = False TabOrder = 2 OnChange = TrackBar2Change end object TrackBar3: TTrackBar Left = 0 Top = 81 Width = 100 Height = 20 ShowSelRange = False TabOrder = 3 OnChange = TrackBar3Change end object TrackBar4: TTrackBar Left = 0 Top = 103 Width = 100 Height = 20 ShowSelRange = False TabOrder = 4 OnChange = TrackBar4Change end object TrackBar5: TTrackBar Left = 0 Top = 125 Width = 100 Height = 20 ShowSelRange = False TabOrder = 5 OnChange = TrackBar5Change end object TrackBar6: TTrackBar Left = 0 Top = 147 Width = 100 Height = 20 ShowSelRange = False TabOrder = 6 OnChange = TrackBar6Change end end end
相关文章推荐
- 再学 GDI+[71]: 路径画刷(11) - RotateTransform、ScaleTransform 等变换
- 再学 GDI+[46]: 路径 - Create、FillPath、DrawPath
- 再学 GDI+[58]: 路径 - 保存与读取路径数据
- 再学 GDI+[67]: 路径画刷(7) - 画个五角星
- GDI+ 学习记录(11) 路径渐变画刷 - PathGradientBrush
- GDI+ 路径 - IsVisible、IsOutlineVisible
- GDI+学习记录(15)-路径渐变画刷
- 再学 GDI+[47]: 路径 - CloseFigure
- 再学 GDI+[50]: 路径 - GetPathPoints、GetPathTypes、TPathData、GetPathData
- 再学 GDI+[53]: 路径 - SetFillMode
- 再学 GDI+[59]: 路径 - TGPGraphicsPathIterator
- 再学 GDI+[62]: 路径画刷(2) - SetCenterPoint、GetCenterPoint
- 再学 GDI+[68]: 路径画刷(8) - SetBlendTriangularShaped、SetBlendBellShape
- 再学 GDI+[79]: 区域(8) - Transform - 区域的 Matrix 变换
- GDI+ 学习记录(25): 变换 - Transform
- 再学 GDI+[48]: 路径 - StartFigure、CloseFigure、CloseAllFigures
- 再学 GDI+[55]: 路径 - Flatten
- 再学 GDI+[63]: 路径画刷(3) - SetFocusScales、GetFocusScales
- 再学 GDI+[69]: 路径画刷(9) - SetInterpolationColors 与 SetSurroundColors 的区别