程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> GdiPlus[9]: IGPTextureBrush 變換

GdiPlus[9]: IGPTextureBrush 變換

編輯:Delphi

TranslateTransform: 平移;

  ScaleTransform: 放縮;

  RotateTransform: 旋轉;

  通過 MultiplyTransform 方法和 Transform 屬性, 能完成包括上述變換在內的更多變換.

  ResetTransform 方法是重置變換.

  這些方法和屬性, 在 IGPGraphics 中都有, 在 IGPGraphics 中詳細學習更合適些.

  測試效果圖:

GdiPlus[9]: IGPTextureBrush 變換

  代碼文件:

unit Unit1; 
 
interface 
 
uses 
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
 Dialogs, ExtCtrls, StdCtrls, ComCtrls; 
 
type 
 TForm1 = class(TForm) 
  TrackBar1: TTrackBar; 
  TrackBar2: TTrackBar; 
  TrackBar3: TTrackBar; 
  TrackBar4: TTrackBar; 
  TrackBar5: TTrackBar; 
  Label1: TLabel; 
  Label2: TLabel; 
  Label3: TLabel; 
  PaintBox1: TPaintBox; 
  procedure TrackBar1Change(Sender: TObject); 
  procedure FormCreate(Sender: TObject); 
  procedure PaintBox1Paint(Sender: TObject); 
 end; 
 
var 
 Form1: TForm1; 
 
implementation 
 
{$R *.dfm}  
 
uses GdiPlus, GdiPlusHelpers; 
 
var 
 Brush1: IGPTextureBrush; 
 Image: IGPImage; 
 Rect: TGPRect; 
 RX: Single = 1.0 ; 
 RY: Single = 1.0; 
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
 TrackBar1.Min := -200; 
 TrackBar1.Max := 200; 
 
 TrackBar2.Min := -200; 
 TrackBar2.Max := 200; 
 
 TrackBar3.Min := -99; 
 TrackBar3.Max := 99; 
 
 TrackBar4.Min := -99; 
 TrackBar4.Max := 99; 
 
 TrackBar5.Min := -180; 
 TrackBar5.Max := 180; 
 
 TrackBar2.OnChange := TrackBar1.OnChange; 
 TrackBar3.OnChange := TrackBar1.OnChange; 
 TrackBar4.OnChange := TrackBar1.OnChange; 
 TrackBar5.OnChange := TrackBar1.OnChange; 
 
 Image := TGPImage.Create('C:\GdiPlusImg\HouseAndTree.gif'); 
 Brush1 := TGPTextureBrush.Create(Image); 
 Rect.Initialize(0, 0, PaintBox1.Width, PaintBox1.Height); 
end; 
 
procedure TForm1.PaintBox1Paint(Sender: TObject); 
begin 
 Brush1.ResetTransform; 
 Brush1.TranslateTransform(TrackBar1.Tag, TrackBar2.Tag); 
 Brush1.ScaleTransform(RX + TrackBar3.Tag / 100, RY + TrackBar4.Tag / 100); 
 Brush1.RotateTransform(TrackBar5.Tag); 
 PaintBox1.ToGPGraphics.FillRectangle(Brush1, Rect); 
end; 
 
procedure TForm1.TrackBar1Change(Sender: TObject); 
begin 
 with TTrackBar(Sender) do Tag := Position; 
 PaintBox1.Repaint; 
end; 
 
end. 

窗體文件:

object Form1: TForm1 
 Left = 0 
 Top = 0 
 Caption = 'Form1' 
 ClIEntHeight = 234 
 ClIEntWidth = 423 
 Color = clBtnFace 
 Font.Charset = DEFAULT_CHARSET 
 Font.Color = clWindowText 
 Font.Height = -11 
 Font.Name = 'Tahoma' 
 Font.Style = [] 
 OldCreateOrder = False 
 OnCreate = FormCreate 
 PixelsPerInch = 96 
 TextHeight = 13 
 object Label1: TLabel 
  Left = 259 
  Top = 13 
  Width = 28 
  Height = 13 
  Caption = #24179#31227':' 
 end 
 object Label2: TLabel 
  Left = 259 
  Top = 90 
  Width = 28 
  Height = 13 
  Caption = #25918#32553':' 
 end 
 object Label3: TLabel 
  Left = 259 
  Top = 169 
  Width = 28 
  Height = 13 
  Caption = #26059#36716':' 
 end 
 object PaintBox1: TPaintBox 
  Left = 8 
  Top = 8 
  Width = 225 
  Height = 217 
  OnPaint = PaintBox1Paint 
 end 
 object TrackBar1: TTrackBar 
  Left = 251 
  Top = 32 
  Width = 169 
  Height = 23 
  ShowSelRange = False 
  TabOrder = 0 
  OnChange = TrackBar1Change 
 end 
 object TrackBar2: TTrackBar 
  Left = 251 
  Top = 56 
  Width = 169 
  Height = 23 
  ShowSelRange = False 
  TabOrder = 1 
 end 
 object TrackBar3: TTrackBar 
  Left = 251 
  Top = 109 
  Width = 169 
  Height = 23 
  ShowSelRange = False 
  TabOrder = 2 
 end 
 object TrackBar4: TTrackBar 
  Left = 251 
  Top = 133 
  Width = 169 
  Height = 23 
  ShowSelRange = False 
  TabOrder = 3 
 end 
 object TrackBar5: TTrackBar 
  Left = 251 
  Top = 188 
  Width = 169 
  Height = 23 
  ShowSelRange = False 
  TabOrder = 4 
 end 
end 



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved