📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, jpeg, ComCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Image2: TImage;
Button1: TButton;
ListBox1: TListBox;
Label1: TLabel;
Button2: TButton;
SaveDialog1: TSaveDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
Var i,j,newR,newG,newB:Integer;
begin
For i:=0 To Image1.Width Do
For j:=0 To Image1.Height Do
Begin
//新的红原色
newR:=Round(GetRValue(Image1.Canvas.Pixels[i-1,j-1])+GetRValue(Image1.Canvas.Pixels[i-1,j])+GetRValue(Image1.Canvas.Pixels[i-1,j+1])
+GetRValue(Image1.Canvas.Pixels[i,j-1])+GetRValue(Image1.Canvas.Pixels[i,j])+GetRValue(Image1.Canvas.Pixels[i,j+1])+
GetRValue(Image1.Canvas.Pixels[i+1,j-1])+GetRValue(Image1.Canvas.Pixels[i+1,j])+GetRValue(Image1.Canvas.Pixels[i+1,j+1])/9);
//新的绿原色
newG:=Round(GetGValue(Image1.Canvas.Pixels[i-1,j-1])+GetGValue(Image1.Canvas.Pixels[i-1,j])+GetGValue(Image1.Canvas.Pixels[i-1,j+1])
+GetGValue(Image1.Canvas.Pixels[i,j-1])+GetGValue(Image1.Canvas.Pixels[i,j])+GetGValue(Image1.Canvas.Pixels[i,j+1])+
GetGValue(Image1.Canvas.Pixels[i+1,j-1])+GetGValue(Image1.Canvas.Pixels[i+1,j])+GetGValue(Image1.Canvas.Pixels[i+1,j+1])/9);
//新的蓝原色
newB:=Round(GetBValue(Image1.Canvas.Pixels[i-1,j-1])+GetBValue(Image1.Canvas.Pixels[i-1,j])+GetBValue(Image1.Canvas.Pixels[i-1,j+1])
+GetBValue(Image1.Canvas.Pixels[i,j-1])+GetBValue(Image1.Canvas.Pixels[i,j])+GetBValue(Image1.Canvas.Pixels[i,j+1])+
GetBValue(Image1.Canvas.Pixels[i+1,j-1])+GetBValue(Image1.Canvas.Pixels[i+1,j])+GetBValue(Image1.Canvas.Pixels[i+1,j+1])/9);
Case ListBox1.ItemIndex Of
0:Image2.Canvas.Pixels[i,j]:=RGB(
255, //变换红原色通道
GetGValue(Image1.Canvas.Pixels[i,j]),
GetBValue(Image1.Canvas.Pixels[i,j]));
1:Image2.Canvas.Pixels[i,j]:=RGB(
GetRValue(Image1.Canvas.Pixels[i,j]),
255, //变换绿原色通道
GetBValue(Image1.Canvas.Pixels[i,j]));
2:Image2.Canvas.Pixels[i,j]:=RGB(
GetRValue(Image1.Canvas.Pixels[i,j]),
GetGValue(Image1.Canvas.Pixels[i,j]),
255); //变换蓝原色通道
3:Image2.Canvas.Pixels[i,j]:=RGB( //水彩效果
GetRValue(newR),
GetGValue(Image1.Canvas.Pixels[i,j]),
GetBValue(Image1.Canvas.Pixels[i,j]));
4:Image2.Canvas.Pixels[i,j]:=RGB( //紫色通道
GetRValue(Image1.Canvas.Pixels[i,j]),
GetGValue(newG),
GetBValue(Image1.Canvas.Pixels[i,j]));
5:Image2.Canvas.Pixels[i,j]:=RGB( //黄色通道
GetRValue(Image1.Canvas.Pixels[i,j]),
GetGValue(Image1.Canvas.Pixels[i,j]),
GetBValue(newB));
6:Image2.Canvas.Pixels[i,j]:=RGB( //失真效果
GetRValue(newR),
GetGValue(newG),
GetBValue(newB));
7:Image2.Canvas.Pixels[i,j]:=RGB( //柔化效果
GetRValue(Image1.Canvas.Pixels[i-2,j-2]),
GetGValue(Image1.Canvas.Pixels[i,j]),
GetBValue(Image1.Canvas.Pixels[i+2,j+2]));
8:Image2.Canvas.Pixels[i,j]:=RGB( //明暗效果
Round(GetGValue(Image1.Canvas.Pixels[i,j])/4), //变换红原色通道
Round(GetGValue(Image1.Canvas.Pixels[i,j])/4),
Round(GetBValue(Image1.Canvas.Pixels[i,j])/4));
end;
end;
End;
procedure TForm1.Button2Click(Sender: TObject);
begin
If SaveDialog1.Execute Then
Image2.Picture.SaveToFile(SaveDialog1.FileName); //保存效果图
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -