unit umain; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ieview, imageenview, Menus, ComCtrls, StdCtrls, ExtCtrls, hyieutils, Buttons; type TForm1 = class(TForm) ImageEnView1: TImageEnView; Panel1: TPanel; GroupBox2: TGroupBox; TrackBar1: TTrackBar; GroupBox3: TGroupBox; Label2: TLabel; TrackBar2: TTrackBar; Label3: TLabel; TrackBar3: TTrackBar; Label4: TLabel; TrackBar4: TTrackBar; GroupBox4: TGroupBox; CheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; GroupBox1: TGroupBox; TrackBar5: TTrackBar; CheckBox4: TCheckBox; GroupBox5: TGroupBox; TrackBar6: TTrackBar; GroupBox6: TGroupBox; Label1: TLabel; Label5: TLabel; TrackBar7: TTrackBar; TrackBar8: TTrackBar; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Panel2: TPanel; SpeedButtonSelRect: TSpeedButton; Label6: TLabel; SpeedButtonSelEllipse: TSpeedButton; SpeedButtonSelPoly: TSpeedButton; procedure TrackBar1Change(Sender: TObject); procedure TrackBar2Change(Sender: TObject); procedure TrackBar3Change(Sender: TObject); procedure TrackBar4Change(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure CheckBox2Click(Sender: TObject); procedure CheckBox3Click(Sender: TObject); procedure TrackBar5Change(Sender: TObject); procedure CheckBox4Click(Sender: TObject); procedure TrackBar6Change(Sender: TObject); procedure TrackBar7Change(Sender: TObject); procedure Button1Click(Sender: TObject); procedure ImageEnView1SelectionChange(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure SelectModeClick(Sender: TObject); private { Private declarations } public { Public declarations } procedure ChangeChannelsOffset; end; var Form1: TForm1; implementation {$R *.DFM} {$R WindowsTheme.res} // contrast procedure TForm1.TrackBar1Change(Sender: TObject); begin ImageEnView1.IEBitmap.Contrast := TrackBar1.Position; ImageEnView1.Update; end; procedure TForm1.ChangeChannelsOffset; begin ImageEnView1.IEBitmap.ChannelOffset[0] := TrackBar2.Position; // red ImageEnView1.IEBitmap.ChannelOffset[1] := TrackBar3.Position; // green ImageEnView1.IEBitmap.ChannelOffset[2] := TrackBar4.Position; // blue ImageEnView1.Update; end; // red procedure TForm1.TrackBar2Change(Sender: TObject); begin ChangeChannelsOffset; end; // green procedure TForm1.TrackBar3Change(Sender: TObject); begin ChangeChannelsOffset; end; // blue procedure TForm1.TrackBar4Change(Sender: TObject); begin ChangeChannelsOffset; end; // show red procedure TForm1.CheckBox1Click(Sender: TObject); begin TrackBar2.Enabled := CheckBox1.Checked; if CheckBox1.Checked then TrackBar2.Position := 0 else TrackBar2.Position := -255; ChangeChannelsOffset; end; // show green procedure TForm1.CheckBox2Click(Sender: TObject); begin TrackBar3.Enabled := CheckBox2.Checked; if CheckBox2.Checked then TrackBar3.Position := 0 else TrackBar3.Position := -255; ChangeChannelsOffset; end; // show blue procedure TForm1.CheckBox3Click(Sender: TObject); begin TrackBar4.Enabled := CheckBox3.Checked; if CheckBox3.Checked then TrackBar4.Position := 0 else TrackBar4.Position := -255; ChangeChannelsOffset; end; // Zoom procedure TForm1.TrackBar5Change(Sender: TObject); begin ImageEnView1.Zoom := TrackBar5.Position; end; // Fit procedure TForm1.CheckBox4Click(Sender: TObject); begin if CheckBox4.Checked then begin ImageEnView1.AutoFit := true; ImageEnView1.Fit; TrackBar5.Enabled := false; end else begin ImageEnView1.AutoFit := false; TrackBar5.Enabled := true; ImageEnView1.Zoom := TrackBar5.Position; end; end; // Brightness procedure TForm1.TrackBar6Change(Sender: TObject); begin if CheckBox1.Checked then TrackBar2.Position := TrackBar6.Position; if CheckBox2.Checked then TrackBar3.Position := TrackBar6.Position; if CheckBox3.Checked then TrackBar4.Position := TrackBar6.Position; ChangeChannelsOffset; end; // black/white ranges procedure TForm1.TrackBar7Change(Sender: TObject); begin ImageEnView1.IEBitmap.BlackValue:=trackbar7.position; ImageEnView1.IEBitmap.WhiteValue:=trackbar8.position; ImageEnView1.Update; end; procedure TForm1.Button1Click(Sender: TObject); begin with ImageEnView1.IO do begin NativePixelFormat := true; LoadFromFile(ExecuteOpenDialog('', '', false, 1, '')); end; trackbar7.Max := (1 shl (ImageEnView1.IEBitmap.BitCount div ImageEnView1.IEBitmap.ChannelCount)) - 1; trackbar7.Position := 0; trackbar8.Max := trackbar7.Max; trackbar8.Position := trackbar7.Max; end; procedure TForm1.ImageEnView1SelectionChange(Sender: TObject); begin ImageEnView1.IEBitmap.AdjustmentsMask.Assign( ImageEnView1.SelectionMask ); if ImageEnView1.IEBitmap.AdjustmentsMask.IsEmpty then ImageEnView1.IEBitmap.AdjustmentsMask.Fill(); ImageEnView1.Update(); end; // fix contrast procedure TForm1.Button2Click(Sender: TObject); begin ImageEnView1.IEBitmap.FixContrast(); TrackBar1.Position := 0; end; // fix channel offset procedure TForm1.Button3Click(Sender: TObject); begin ImageEnView1.IEBitmap.FixChannelOffset(); TrackBar2.Position := 0; TrackBar3.Position := 0; TrackBar4.Position := 0; end; // fix black/white range procedure TForm1.Button4Click(Sender: TObject); begin ImageEnView1.IEBitmap.StretchValues(); TrackBar7.Position := 0; TrackBar8.Position := TrackBar8.Max; end; procedure TForm1.SelectModeClick(Sender: TObject); begin if SpeedButtonSelRect.Down then ImageEnView1.MouseInteract := [miSelect] else if SpeedButtonSelEllipse.Down then ImageEnView1.MouseInteract := [miSelectCircle] else if SpeedButtonSelPoly.Down then ImageEnView1.MouseInteract := [miSelectPolygon] else ImageEnView1.MouseInteract := []; end; end.