BSOne.SFC/EM.Lib/ImageEn_SRC/Demos/ImageEditing/ReplaceParts/umain.pas

167 lines
4.5 KiB
Plaintext

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.