?? unit1.pas
字號:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Image1: TImage;
Image2: TImage;
TrackBar1: TTrackBar;
TrackBar2: TTrackBar;
TrackBar3: TTrackBar;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure TrackBar1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
const
MaxPixelCount = 32768;
type
pRGBArray = ^TRGBArray;
TRGBArray = ARRAY[0..MaxPixelCount-1] OF TRGBTriple;
function Min(a, b: integer): integer;
function Max(a, b: integer): integer;
implementation
{$R *.dfm}
procedure TForm1.TrackBar1Change(Sender: TObject);
var
i, j, RValue, GValue, BValue: integer;
Row1, Row2: pRGBArray;
begin
//設置圖片RGB的值
RValue := TrackBar1.Position;
GValue := TrackBar2.Position;
BValue := TrackBar3.Position;
//設置圖片每行的象素
for i := 0 to Image1.Picture.Height - 1 do
begin
Row1 := Image1.Picture.Bitmap.ScanLine[i];
Row2 := Image2.Picture.Bitmap.ScanLine[i];
//對行中的象素進行設置
for j := 0 to Image1.Picture.Width - 1 do
begin
//增加RGB的象素值
if RValue > 0 then //R
Row2[j].rgbtRed := Min(255, Row1[j].rgbtRed + RValue)
else
Row2[j].rgbtRed := Max(0, Row1[j].rgbtRed + RValue);
if GValue > 0 then //G
Row2[j].rgbtGreen := Min(255, Row1[j].rgbtGreen + GValue)
else
Row2[j].rgbtGreen := Max(0, Row1[j].rgbtGreen + GValue);
if BValue > 0 then //B
Row2[j].rgbtBlue := Min(255, Row1[j].rgbtBlue + BValue)
else
Row2[j].rgbtBlue := Max(0, Row1[j].rgbtBlue + BValue);
end;
end;
Image2.Repaint;
end;
function Max(a, b: integer): integer;
begin
if a > b then result := a
else result := b;
end;
function Min(a, b: integer): integer;
begin
if a < b then result := a
else result := b;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Picture.LoadFromFile('1.BMP');
Image2.Picture.LoadFromFile('1.BMP');
Image1.Picture.Bitmap.PixelFormat := pf24bit;
Image2.Picture.Bitmap.PixelFormat := pf24bit;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -