Learn more about GDI + [54]: Path-Transform

Source: Internet
Author: User
In this example:


Code file:
unit Unit1;interfaceuses  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.
 

Form file:

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  endend
 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.