再学 GDI+[54]: 路径 - Transform

本例效果图:

再学 GDI+[54]: 路径 - Transform

代码文件:

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


 
   

你可能感兴趣的:(transform)