unit umain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ieview, imageenview, StdCtrls, ExtCtrls, ComCtrls, hyieutils, iexBitmaps, hyiedefs, iesettings, iexLayers, iexRulers; type TMainForm = class(TForm) Panel2: TPanel; CheckBoxPan: TCheckBox; CheckBoxZoom: TCheckBox; CheckBoxLayerRotate: TCheckBox; CheckLayerMove: TCheckBox; StatusBar1: TStatusBar; btnOpen: TButton; ImageEnView1: TImageEnView; Splitter: TSplitter; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure btnOpenClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure CheckBoxLayerRotateClick(Sender: TObject); procedure CheckBoxZoomClick(Sender: TObject); procedure CheckBoxPanClick(Sender: TObject); procedure CheckLayerMoveClick(Sender: TObject); procedure ImageEnView1ImageEnGesture(Sender: TObject; Flags: TIEGestureFlags; ID: TIEGestureID; Location: TSmallPoint; Value, InertiaX, InertiaY, PressAndTapDistance: Integer; var Handled: Boolean); private { Private declarations } procedure UpdateControls(); public { Public declarations } end; var MainForm: TMainForm; implementation {$R *.dfm} {$R WindowsTheme.res} procedure TMainForm.FormCreate(Sender: TObject); begin ImageEnView1.Gestures.Pan.Enabled := CheckBoxPan.Checked; ImageEnView1.Gestures.Zoom.Enabled := CheckBoxZoom.Checked; ImageEnView1.Gestures.LayerRotate.Enabled := CheckBoxLayerRotate.Checked; ImageEnView1.Gestures.LayerMove.Enabled := CheckLayerMove.Checked; end; // ImageEnView1.Gestures -> Controls procedure TMainForm.UpdateControls(); begin CheckBoxPan.Checked := ImageEnView1.Gestures.Pan.Enabled; CheckBoxZoom.Checked := ImageEnView1.Gestures.Zoom.Enabled; CheckBoxLayerRotate.Checked := ImageEnView1.Gestures.LayerRotate.Enabled; CheckLayerMove.Checked := ImageEnView1.Gestures.LayerMove.Enabled; end; // Open... procedure TMainForm.btnOpenClick(Sender: TObject); begin with ImageEnView1.IO do LoadFromFile( ExecuteOpenDialog() ); end; procedure TMainForm.CheckBoxLayerRotateClick(Sender: TObject); begin ImageEnView1.Gestures.LayerRotate.Enabled := CheckBoxLayerRotate.Checked; UpdateControls(); if ImageEnView1.Gestures.LayerRotate.Enabled then ImageEnView1.CurrentLayer.Locked := false; // allows rotate on layer 0 end; procedure TMainForm.CheckLayerMoveClick(Sender: TObject); begin ImageEnView1.Gestures.LayerMove.Enabled := CheckLayerMove.Checked; UpdateControls(); if ImageEnView1.Gestures.LayerMove.Enabled then ImageEnView1.CurrentLayer.Locked := false; // allows moving on layer 0 end; procedure TMainForm.CheckBoxZoomClick(Sender: TObject); begin ImageEnView1.Gestures.Zoom.Enabled := CheckBoxZoom.Checked; UpdateControls(); end; procedure TMainForm.CheckBoxPanClick(Sender: TObject); begin ImageEnView1.Gestures.Pan.Enabled := CheckBoxPan.Checked; UpdateControls(); end; // just to show Zoom and Rotate angle procedure TMainForm.ImageEnView1ImageEnGesture(Sender: TObject; Flags: TIEGestureFlags; ID: TIEGestureID; Location: TSmallPoint; Value, InertiaX, InertiaY, PressAndTapDistance: Integer; var Handled: Boolean); begin case ID of iegiZoom: StatusBar1.SimpleText := Format('Zoom %.1f%%', [ImageEnView1.Zoom]); iegiRotate: StatusBar1.SimpleText := Format('Rotate %.1f°', [ImageEnView1.CurrentLayer.Rotate]); iegiPan: StatusBar1.SimpleText := Format('View %d, %d Layer Pos %d, %d', [ImageEnView1.ViewX, ImageEnView1.ViewY, ImageEnView1.CurrentLayer.PosX, ImageEnView1.CurrentLayer.PosY]); end; end; end.