再学 GDI+[21]: TGPTextureBrush 与 TGPMatrix

本例效果图:

再学 GDI+[21]: TGPTextureBrush 与 TGPMatrix

代码文件:

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;

    procedure FormCreate(Sender: TObject);

    procedure FormPaint(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);

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.FormPaint(Sender: TObject);

var

  g: TGPGraphics;

  img: TGPImage;

  tb: TGPTextureBrush;

  matrix: TGPMatrix;

  m11, m12, m21, m22, dx, dy: Single;

begin

  g := TGPGraphics.Create(Canvas.Handle);

  img := TGPImage.Create('c:\temp\small.png');

  tb := TGPTextureBrush.Create(img);



  m11 := TrackBar1.Position / 10;

  m12 := TrackBar2.Position / 10;

  m21 := TrackBar3.Position / 10;

  m22 := TrackBar4.Position / 10;

  dx  := TrackBar5.Position * 10;

  dy  := TrackBar6.Position * 10;



  matrix := TGPMatrix.Create(m11, m12, m21, m22, dx, dy);

  tb.SetTransform(matrix);



  g.FillRectangle(tb, 0, 0, ClientWidth - Panel1.Width, ClientHeight);



  matrix.Free;

  img.Free;

  tb.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 = 170

  ClientWidth = 324

  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 Panel1: TPanel

    Left = 225

    Top = 0

    Width = 99

    Height = 170

    Align = alRight

    TabOrder = 0

    ExplicitLeft = 288

    ExplicitHeight = 213

    object Button1: TButton

      Left = 14

      Top = 8

      Width = 75

      Height = 25

      Caption = #21021#22987#21270

      TabOrder = 0

    end

    object TrackBar1: TTrackBar

      Left = 0

      Top = 34

      Width = 100

      Height = 20

      ShowSelRange = False

      TabOrder = 1

      OnChange = TrackBar1Change

    end

    object TrackBar2: TTrackBar

      Left = 0

      Top = 56

      Width = 100

      Height = 20

      ShowSelRange = False

      TabOrder = 2

      OnChange = TrackBar2Change

    end

    object TrackBar3: TTrackBar

      Left = 0

      Top = 78

      Width = 100

      Height = 20

      ShowSelRange = False

      TabOrder = 3

      OnChange = TrackBar3Change

    end

    object TrackBar4: TTrackBar

      Left = 0

      Top = 100

      Width = 100

      Height = 20

      ShowSelRange = False

      TabOrder = 4

      OnChange = TrackBar4Change

    end

    object TrackBar5: TTrackBar

      Left = 0

      Top = 122

      Width = 100

      Height = 20

      ShowSelRange = False

      TabOrder = 5

      OnChange = TrackBar5Change

    end

    object TrackBar6: TTrackBar

      Left = 0

      Top = 144

      Width = 100

      Height = 20

      ShowSelRange = False

      TabOrder = 6

      OnChange = TrackBar6Change

    end

  end

end


 
   

你可能感兴趣的:(Matrix)