📄 unit2.pas
字号:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, ComCtrls,unit3 ;
type
TForm2 = class(TForm)
GroupBox1: TGroupBox;
Panel1: TPanel;
Panel2: TPanel;
Label2: TLabel;
Label3: TLabel;
ImageBeforeChange: TImage;
ImageAfterChange: TImage;
GroupBoxRGBChange: TGroupBox;
TrackBarRed: TTrackBar;
GroupBoxBrightnessChange: TGroupBox;
LabelRedValue: TLabel;
TrackBarGreen: TTrackBar;
TrackBarBlue: TTrackBar;
LabelGreenValue: TLabel;
LabelBlueValue: TLabel;
Label4: TLabel;
Label5: TLabel;
Label1: TLabel;
ButtonOKRGBChange: TButton;
ButtonCancel: TButton;
TrackBarBrightnessChange: TTrackBar;
ButtonOKBrightnessChange: TButton;
Button3: TButton;
Label6: TLabel;
LabelBrightnessChange: TLabel;
GroupBoxSaturationChange: TGroupBox;
Label7: TLabel;
Label8: TLabel;
TrackBarSaturationChange: TTrackBar;
ButtonOkSaturation: TButton;
Button2: TButton;
Label9: TLabel;
procedure TrackBarRGBChange(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ButtonOKRGBChangeClick(Sender: TObject);
procedure ButtonCancelClick(Sender: TObject);
procedure TrackBarBrightnessChangeChange(Sender: TObject);
procedure ButtonOKBrightnessChangeClick(Sender: TObject);
procedure TrackBarSaturationChangeChange(Sender: TObject);
procedure ButtonOkSaturationClick(Sender: TObject);
private
{ Private declarations }
public
procedure LoadImage(InputBmp:Tbitmap);
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.DFM}
{ TForm2 }
procedure TForm2.LoadImage(InputBmp:Tbitmap);
var
OriginalBmp:Tbitmap;
PreBmp:Tbitmap;
begin
if InputBmp.Height=0 then exit;
if InputBmp.width=0 then exit;
if not assigned(InputBmp) then exit;
OriginalBmp:=Tbitmap.Create;
OriginalBmp.Assign(InputBmp);
PreBmp:=Tbitmap.Create;
OriginalBmp.PixelFormat:=pf24bit;
PreBmp.PixelFormat:=pf24bit;
if (OriginalBmp.Width<=180) and (OriginalBmp.Height<=180) then
begin
ImageBeforeChange.Height:=OriginalBmp.Height;
ImageBeforeChange.Width:=OriginalBmp.Width;
ImageAfterChange.Height:=OriginalBmp.Height;
ImageAfterChange.Width:=OriginalBmp.Width;
ImageBeforeChange.Picture.Bitmap.Assign(OriginalBmp);
ImageAfterChange.Picture.Bitmap.Assign(OriginalBmp);
end;
if OriginalBmp.Height>=OriginalBmp.Width then
begin
PreBmp.Height:=180;
prebmp.Width:=prebmp.Height*OriginalBmp.Width div OriginalBmp.Height;
PreBmp.Canvas.StretchDraw(Rect(0,0,PreBmp.Width,PreBmp.Height),OriginalBmp);
ImageBeforeChange.Height:=PreBmp.Height;
ImageBeforeChange.Width:=PreBmp.Width;
ImageAfterChange.Height:=PreBmp.Height;
ImageAfterChange.Width:=PreBmp.Width;
ImageBeforeChange.Picture.Bitmap.Assign(PreBmp);
ImageAfterChange.Picture.Bitmap.Assign(PreBmp);
end;
if OriginalBmp.Width>OriginalBmp.Height then
begin
PreBmp.Width:=180;
prebmp.Height:=prebmp.Width*OriginalBmp.Height div OriginalBmp.Width;
PreBmp.Canvas.StretchDraw(Rect(0,0,PreBmp.Width,PreBmp.Height),OriginalBmp);
ImageBeforeChange.Height:=PreBmp.Height;
ImageBeforeChange.Width:=PreBmp.Width;
ImageAfterChange.Height:=PreBmp.Height;
ImageAfterChange.Width:=PreBmp.Width;
ImageBeforeChange.Picture.Bitmap.Assign(PreBmp);
ImageAfterChange.Picture.Bitmap.Assign(PreBmp);
end;
ImageBeforeChange.Top:=(panel1.Height-ImageBeforeChange.Height) div 2;
ImageBeforeChange.Left:=(panel1.Width-ImageBeforeChange.Width) div 2;
ImageAfterChange.Top:=(panel2.Height-ImageAfterChange.Height) div 2;
ImageAfterChange.Left:=(panel2.Width-ImageAfterChange.Width) div 2;
OriginalBmp.Free;
PreBmp.Free;
end;
procedure TForm2.TrackBarRGBChange(Sender: TObject);
var
R,G,B:integer;
begin
R := TrackBarRed.Position;
G := TrackBarGreen.Position;
B := TrackBarBlue.Position;
if R <= 0 then LabelRedValue.Caption := IntToStr(R)
else LabelRedValue.Caption := Format('+%d', [R]);
if G<= 0 then LabelGreenValue.Caption := IntToStr(G)
else LabelGreenValue.Caption := Format('+%d', [G]);
if B<= 0 then LabelBlueValue.Caption := IntToStr(B)
else LabelBlueValue.Caption := Format('+%d', [B]);
RGBChange(ImageBeforeChange.Picture.Bitmap,ImageAfterChange.Picture.Bitmap,R,G,B);
ImageAfterChange.Repaint;
//
end;
procedure TForm2.FormShow(Sender: TObject);
begin
TrackBarRed.Position:=0;
TrackBarGreen.Position:=0;
TrackBarBlue.Position:=0;
TrackBarBrightnessChange.Position:=0;
TrackBarSaturationChange.Position:=255;
//
end;
procedure TForm2.ButtonOKRGBChangeClick(Sender: TObject);
begin
form1.ProgressBar1.Position:=0;
form1.ProgressBar1.Visible:=true;
RGBChange(form1.Image1.Picture.Bitmap,
TrackBarRed.Position,
TrackBarGreen.Position,
TrackBarBlue.Position,
form1.ProgressBar1
);
form1.ProgressBar1.Visible:=false;
self.Close;
form1.IsImageChanged:=true;
form1.Image1.Repaint;
form1.Repaint;
end;
procedure TForm2.ButtonCancelClick(Sender: TObject);
begin
close;
end;
procedure TForm2.TrackBarBrightnessChangeChange(Sender: TObject);
var
ValueChange:integer;
begin
ValueChange:=TrackBarBrightnessChange.Position;
if ValueChange<= 0 then LabelBrightnessChange.Caption := IntToStr(ValueChange)
else LabelBrightnessChange.Caption := Format('+%d', [ValueChange]);
BrightnessChange(ImageBeforeChange.Picture.Bitmap,ImageAfterChange.Picture.Bitmap,ValueChange);
ImageAfterChange.Repaint;
// LabelBrightnessChange.Caption:
//
end;
procedure TForm2.ButtonOKBrightnessChangeClick(Sender: TObject);
begin
form1.ProgressBar1.Position:=0;
form1.ProgressBar1.Visible:=true;
BrightnessChange(form1.Image1.Picture.Bitmap,
TrackBarBrightnessChange.Position,
form1.ProgressBar1);
form1.ProgressBar1.Visible:=false;
self.Close;
form1.IsImageChanged:=true;
form1.Image1.Repaint;
form1.Repaint;
end;
procedure TForm2.TrackBarSaturationChangeChange(Sender: TObject);
begin
label9.Caption:=inttostr(TrackBarSaturationChange.Position);
Saturation(ImageBeforeChange.Picture.Bitmap,ImageAfterChange.Picture.Bitmap,TrackBarSaturationChange.Position);
ImageAfterChange.Repaint;
//
//
end;
procedure TForm2.ButtonOkSaturationClick(Sender: TObject);
begin
form1.ProgressBar1.Position:=0;
form1.ProgressBar1.Visible:=true;
Saturation(form1.Image1.Picture.Bitmap,
TrackBarSaturationChange.Position,
form1.ProgressBar1);
form1.ProgressBar1.Visible:=false;
self.Close;
form1.IsImageChanged:=true;
form1.Image1.Repaint;
form1.Repaint;
//
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -