unit umain; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, ieview, imageenview, ExtCtrls, Buttons, StdCtrls, ComCtrls, imageenproc, hyieutils, hyiedefs, iexBitmaps, iesettings, iexLayers, iexRulers; type TForm1 = class(TForm) Panel1: TPanel; ImageEnView1: TImageEnView; GroupBox1: TGroupBox; SelRectangle: TSpeedButton; SelEllipse: TSpeedButton; GroupBox2: TGroupBox; PageControl1: TPageControl; TabColor: TTabSheet; Label1: TLabel; Button1: TButton; pnlColor: TShape; ColorDialog1: TColorDialog; Button2: TButton; TabImage: TTabSheet; ImageEnView2: TImageEnView; Button3: TButton; TabTile: TTabSheet; Button4: TButton; ImageEnView3: TImageEnView; SelPolygon: TSpeedButton; SelMagic1: TSpeedButton; SelMagic2: TSpeedButton; SelMagic3: TSpeedButton; Label2: TLabel; TrackBar1: TTrackBar; Button5: TButton; Button6: TButton; procedure SelRectangleClick(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button4Click(Sender: TObject); procedure TrackBar1Change(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} {$R WindowsTheme.res} procedure TForm1.FormCreate(Sender: TObject); begin ImageEnView1.SelectionMaskDepth:=8; // we need selections with 8 bit depth (256 levels) to make soft selections ImageEnView1.IO.LoadFromFile('hongkong.jpg'); ImageEnView2.IO.LoadFromFile('mask.jpg'); ImageEnView3.IO.LoadFromFile('tile.bmp'); end; // change zoom procedure TForm1.TrackBar1Change(Sender: TObject); begin ImageEnView1.Zoom:=TrackBar1.Position; Label2.Caption:='Zoom ('+inttostr(TrackBar1.Position)+'%)'; end; // change selection style procedure TForm1.SelRectangleClick(Sender: TObject); begin if SelRectangle.Down then ImageEnView1.MouseInteract:=[miSelect] else if SelEllipse.Down then ImageEnView1.MouseInteract:=[miSelectCircle] else if SelPolygon.Down then ImageEnView1.MouseInteract:=[miSelectPolygon] else if SelMagic1.Down then begin ImageEnView1.MouseInteract:=[miSelectMagicWand]; ImageEnView1.MagicWandMode:=iewInclusive; end else if SelMagic2.Down then begin ImageEnView1.MouseInteract:=[miSelectMagicWand]; ImageEnView1.MagicWandMode:=iewExclusive; end else if SelMagic3.Down then begin ImageEnView1.MouseInteract:=[miSelectMagicWand]; ImageEnView1.MagicWandMode:=iewGlobal; end; end; // select color procedure TForm1.Button1Click(Sender: TObject); begin ColorDialog1.Color := pnlColor.Brush.Color; if ColorDialog1.Execute then pnlColor.Brush.Color := ColorDialog1.Color; end; // Load image to replace procedure TForm1.Button3Click(Sender: TObject); begin with ImageEnView2.IO do LoadFromFile( ExecuteOpenDialog('','',true,0,'') ); end; // Load tile procedure TForm1.Button4Click(Sender: TObject); begin with ImageEnView3.IO do LoadFromFile( ExecuteOpenDialog('','',true,0,'') ); end; // make soft selection procedure TForm1.Button5Click(Sender: TObject); begin ImageEnView1.MakeSelectionFeather(4); end; // replace procedure TForm1.Button2Click(Sender: TObject); begin if PageControl1.ActivePage=TabColor then // color ImageEnView1.Proc.Fill( TColor2TRGB( pnlColor.Brush.Color )) else if PageControl1.ActivePage=TabImage then begin // mask ImageEnView2.Proc.SaveUndo(ieuImage); ImageEnView2.Proc.ImageResize(ImageEnView1.IEBitmap.Width,ImageEnView1.IEBitmap.Height,iehLeft,ievTop); ImageEnView1.SelectionMask.CopyIEBitmap( ImageEnView1.IEBitmap, ImageEnView2.IEBitmap, false,false,true ); ImageEnView1.Update; ImageEnView2.Proc.Undo; end else if PageControl1.ActivePage=TabTile then begin // tile ImageEnView3.Proc.SaveUndo(ieuImage); ImageEnView3.Proc.MakeTile( ImageEnView1.IEBitmap.Width div ImageEnView3.IEBitmap.Width+1, ImageEnView1.IEBitmap.Height div ImageEnView3.IEBitmap.Height+1); ImageEnView1.SelectionMask.CopyIEBitmap( ImageEnView1.IEBitmap, ImageEnView3.IEBitmap, false,false,true ); ImageEnView1.Update; ImageEnView3.Proc.Undo; end; end; // Open procedure TForm1.Button6Click(Sender: TObject); begin with ImageEnView1.IO do LoadFromFile( ExecuteOpenDialog('','',true,0,'') ); end; end.