⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 Delphi7编程80例(完全版)
💻 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 + -