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; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; 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); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} uses GDIPAPI,GDIPOBJ; 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; matrix:TGPMatrix; m1,m2,m3,m4,dx,dy:Single; begin Form1.DoubleBuffered:=True; g:=TGPGraphics.Create(Canvas.Handle); g.Clear(aclWhite); img:=TGPImage.Create('d:\mm.png'); m1:=TrackBar1.Position / 10; m2:=TrackBar2.Position / 10; m3:=TrackBar3.Position / 10; m4:=TrackBar4.Position / 10; dx:=TrackBar5.Position * 10; dy:=TrackBar6.Position * 10; matrix:=TGPMatrix.Create(m1,m2,m3,m4,dx,dy); g.SetTransform(matrix); g.DrawImage(img,10,10,img.GetWidth,img.GetHeight); img.Free; matrix.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.