📄 main.pas
字号:
Transform := TImageFormatTransform.Create;
try
Transform.OnProgress := Self.OnProgress;
Transform.ImageFormat := ifColor256;
Transform.Quantize := ImageQuantize1.Checked;
Transform.Dither := ImageDither1.Checked;
// Setup and Show Status Form
frmStatus.lblStatus.Caption := 'Changing image type to 256 colors...';
frmStatus.lblStatus.Update;
frmStatus.Show;
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).SaveUndo;
FUndoGraphic.Assign ( GetGraphic );
Transform.ApplyOnDest ( FUndoGraphic, GetGraphic );
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).Tag := 1;
case Transform.ImageFormat of
ifBlackWhite: StatusBar1.Panels[ 1 ].Text := ' 1 bit Black & White ';
ifGray16: StatusBar1.Panels[ 1 ].Text := ' 4 bit 16 shade gray ';
ifGray256: StatusBar1.Panels[ 1 ].Text := ' 8 bit 256 shade gray ';
ifColor16: StatusBar1.Panels[ 1 ].Text := ' 4 bit 16 colors ';
ifColor256: StatusBar1.Panels[ 1 ].Text := ' 8 bit 256 colors ';
ifTrueColor: StatusBar1.Panels[ 1 ].Text := ' 24 bit True color ';
else
StatusBar1.Panels[ 1 ].Text := ' Unknown image format ';
end; // case
finally
Transform.Free;
EndHourglass;
end;
end;
finally
frmStatus.Hide;
EndHourglass;
end;
end;
procedure TFormMain.ImageQuantize1Execute ( Sender: TObject );
begin
ImageQuantize1.Checked := not ImageQuantize1.Checked;
end;
procedure TFormMain.ImageDither1Execute ( Sender: TObject );
begin
ImageDither1.Checked := not ImageDither1.Checked;
end;
procedure TFormMain.EffectsNegative1Execute ( Sender: TObject );
var
Transform: TNegativeTransform;
DIBGraphic: TDibGraphic;
begin
DIBGraphic := GetGraphic;
if not DIBGraphic.Empty then begin
BeginHourglass;
FUndoGraphic.Assign ( GetGraphic );
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).SaveUndo;
frmStatus.Show;
frmStatus.lblStatus.Caption := 'Negative Effect...';
frmStatus.lblStatus.Update;
Sleep ( 1000 );
Transform := TNegativeTransform.Create;
try
Transform.OnProgress := Self.OnProgress;
Transform.ApplyOnDest ( FUndoGraphic, GetGraphic );
EndHourglass;
finally
Transform.Free;
frmStatus.Hide;
EndHourglass;
end;
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).Tag := 1;
end; // if
end;
procedure TFormMain.EffectsAntialis1Execute ( Sender: TObject );
begin
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).SaveUndo;
case GetGraphic.ImageFormat of
ifBlackWhite: begin
EffectsAntialis1.Checked := not EffectsAntialis1.Checked;
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).AntiAliased :=
EffectsAntialis1.Checked;
end;
else begin
ShowMessage ( 'The AntiAliased property only improves black & white images. Antialiased has been set to false.'
);
EffectsAntialis1.Checked := False;
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).AntiAliased := False;
end;
end; // case
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).Tag := 1;
end;
procedure TFormMain.EffectsSharpen1Execute ( Sender: TObject );
var
Transform: TSharpenTransform;
DIBGraphic: TDibGraphic;
begin
DIBGraphic := GetGraphic;
if not DIBGraphic.Empty then begin
BeginHourglass;
FUndoGraphic.Assign ( GetGraphic );
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).SaveUndo;
frmStatus.Show;
frmStatus.lblStatus.Caption := 'Sharpen Effect...';
frmStatus.lblStatus.Update;
Sleep ( 1000 );
Transform := TSharpenTransform.Create;
try
Transform.OnProgress := Self.OnProgress;
Transform.ApplyOnDest ( FUndoGraphic, GetGraphic );
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).Tag := 1;
finally
frmStatus.Hide;
Transform.Free;
EndHourglass;
end;
end; // if
end;
procedure TFormMain.EffectsSmoothern1Execute ( Sender: TObject );
var
Transform: TSmoothTransform;
DIBGraphic: TDibGraphic;
begin
DIBGraphic := GetGraphic;
if not DIBGraphic.Empty then begin
BeginHourglass;
FUndoGraphic.Assign ( GetGraphic );
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).SaveUndo;
frmStatus.Show;
frmStatus.lblStatus.Caption := 'Smoothen Effect...';
frmStatus.lblStatus.Update;
Sleep ( 1000 );
Transform := TSmoothTransform.Create;
try
Transform.OnProgress := Self.OnProgress;
Transform.ApplyOnDest ( FUndoGraphic, GetGraphic );
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).Tag := 1;
finally
frmStatus.Hide;
Transform.Free;
EndHourglass;
end;
end; // if
end;
procedure TFormMain.EffectsEdgeDetection1Execute ( Sender: TObject );
var
Transform: TEdgeTransform;
DIBGraphic: TDibGraphic;
begin
DIBGraphic := GetGraphic;
if not DIBGraphic.Empty then begin
BeginHourglass;
FUndoGraphic.Assign ( GetGraphic );
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).SaveUndo;
Transform := TEdgeTransform.Create;
frmStatus.Show;
frmStatus.lblStatus.Caption := 'Edge detection effect...';
frmStatus.lblStatus.Update;
Sleep ( 1000 );
try
Transform.OnProgress := Self.OnProgress;
Transform.ApplyOnDest ( FUndoGraphic, GetGraphic );
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).Tag := 1;
finally
frmStatus.Hide;
Transform.Free;
EndHourglass;
end;
end; // if
end;
procedure TFormMain.EffectsEmboss1Execute ( Sender: TObject );
var
Transform: TEmbossTransform;
DIBGraphic: TDibGraphic;
begin
DIBGraphic := GetGraphic;
if not DIBGraphic.Empty then begin
BeginHourglass;
FUndoGraphic.Assign ( GetGraphic );
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).SaveUndo;
frmStatus.Show;
frmStatus.lblStatus.Caption := 'Emboss Effect....';
frmStatus.lblStatus.Update;
Sleep ( 1000 );
Transform := TEmbossTransform.Create;
try
Transform.OnProgress := Self.OnProgress;
Transform.ApplyOnDest ( FUndoGraphic, GetGraphic );
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).Tag := 1;
finally
frmStatus.Hide;
Transform.Free;
EndHourglass;
end;
end; // if
end;
procedure TFormMain.EffectsGamma1Execute ( Sender: TObject );
var
Transform: TGammaTransform;
DIBGraphic: TDibGraphic;
GammaStr: string;
Gamma: Double;
begin
DIBGraphic := GetGraphic;
if not DIBGraphic.Empty then begin
BeginHourglass;
GammaStr := '1.0';
if not InputQuery ( 'Gamma', 'Gamma value (0.1 - 7.0)', GammaStr ) then
Exit;
Application.ProcessMessages;
Gamma := StrToFloat ( GammaStr );
FUndoGraphic.Assign ( GetGraphic );
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).SaveUndo;
frmStatus.Show;
frmStatus.lblStatus.Caption := 'Gamma transform...';
frmStatus.lblStatus.Update;
Sleep ( 1000 );
Transform := TGammaTransform.Create;
try
Transform.OnProgress := Self.OnProgress;
Transform.Gamma := Gamma;
Transform.ApplyOnDest ( FUndoGraphic, GetGraphic );
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).Tag := 1;
finally
frmStatus.Hide;
Transform.Free;
EndHourglass;
end;
end; // if
end;
procedure TFormMain.FitActualSize1Execute ( Sender: TObject );
begin
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).ZoomMode := zmOriginalSize;
FitActualSize1.Checked := True;
end;
procedure TFormMain.FitFullPage1Execute ( Sender: TObject );
begin
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).ZoomMode := zmFullPage;
FitFullPage1.Checked := True;
end;
procedure TFormMain.FitWidth1Execute ( Sender: TObject );
begin
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).ZoomMode := zmFitWidth;
FitWidth1.Checked := True;
end;
procedure TFormMain.FitHeight1Execute ( Sender: TObject );
begin
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).ZoomMode := zmFitHeight;
FitHeight1.Checked := True;
end;
procedure TFormMain.FitPercent1Execute ( Sender: TObject );
begin
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).ZoomMode := zmPercent;
FitPercent1.Checked := True;
end;
procedure TFormMain.FitToPage1Execute ( Sender: TObject );
begin
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).ZoomMode := zmFitToPage;
FitToPage1.Checked := True;
end;
procedure TFormMain.Rotate901Execute ( Sender: TObject );
var
Transform: TRotateTransform;
DIBGraphic: TDibGraphic;
begin
DIBGraphic := GetGraphic;
if not DIBGraphic.Empty then begin
BeginHourglass;
FUndoGraphic.Assign ( GetGraphic );
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).SaveUndo;
Transform := TRotateTransform.Create;
try
Transform.OnProgress := Self.OnProgress;
Transform.Angle := 90;
Transform.ApplyOnDest ( FUndoGraphic, GetGraphic );
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).Tag := 1;
finally
Transform.Free;
EndHourglass;
end;
end; // if
end;
procedure TFormMain.Rotate1801Execute ( Sender: TObject );
var
Transform: TRotateTransform;
DIBGraphic: TDibGraphic;
begin
DIBGraphic := GetGraphic;
if not DIBGraphic.Empty then begin
BeginHourglass;
FUndoGraphic.Assign ( GetGraphic );
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).SaveUndo;
Transform := TRotateTransform.Create;
try
Transform.OnProgress := Self.OnProgress;
Transform.Angle := 180;
Transform.ApplyOnDest ( FUndoGraphic, GetGraphic );
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).Tag := 1;
finally
Transform.Free;
EndHourglass;
end;
end; // if
end;
procedure TFormMain.Rotate2701Execute ( Sender: TObject );
var
Transform: TRotateTransform;
DIBGraphic: TDibGraphic;
begin
FUndoGraphic.Assign ( GetGraphic );
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).SaveUndo;
DIBGraphic := GetGraphic;
if not DIBGraphic.Empty then begin
BeginHourglass;
Transform := TRotateTransform.Create;
try
Transform.OnProgress := Self.OnProgress;
Transform.Angle := 270;
Transform.ApplyOnDest ( FUndoGraphic, GetGraphic );
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).Tag := 1;
finally
Transform.Free;
EndHourglass;
end;
end; // if
end;
procedure TFormMain.RotateArbritary1Execute ( Sender: TObject );
var
Transform: TRotateTransform;
DIBGraphic: TDibGraphic;
AngleStr: string;
Angle: Double;
begin
DIBGraphic := GetGraphic;
if not DIBGraphic.Empty then begin
BeginHourglass;
AngleStr := '45';
if not InputQuery ( 'Rotate', 'Rotation Angle', AngleStr ) then
Exit;
Angle := StrToFloat ( AngleStr );
FUndoGraphic.Assign ( GetGraphic );
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).SaveUndo;
Transform := TRotateTransform.Create;
try
Transform.OnProgress := Self.OnProgress;
Transform.Angle := Angle;
Transform.ApplyOnDest ( FUndoGraphic, GetGraphic );
TImageScrollBox ( PageControl1.ActivePage.Controls[ 0 ] ).Tag := 1;
finally
Transform.Free;
EndHourglass;
end;
end; // if
end;
procedure TFormMain.FlipHorizontal1Execute ( Sender: TOb
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -