
13.04.2012, 17:40
|
Так проходящий
|
|
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
|
|
PHP код:
type
PRGB32Array = ^TRGB32Array;
TRGB32Array = packed array[0..MaxInt div SizeOf(TRGBQuad)-1] of TRGBQuad;
procedure TForm1.Button1Click(Sender: TObject);
var s0, s1, s2, sr: PRGB32Array;
var x,y,K:integer; c: tcolor;
begin
Image1.Picture.Bitmap.PixelFormat := pf32bit;
Image2.Picture.Bitmap.PixelFormat := pf32bit;
K := UpDown1.Position;
Image2.Picture.Bitmap.Canvas.FillRect(Image2.Picture.Bitmap.Canvas.ClipRect);
for y:=1 to image1.height-2 do
begin
s0 := Image1.Picture.Bitmap.ScanLine[y-1];
s1 := Image1.Picture.Bitmap.ScanLine[y];
s2 := Image1.Picture.Bitmap.ScanLine[y+1];
sr := Image2.Picture.Bitmap.ScanLine[y];
for x:=1 to image1.width-2 do
begin
sr[x].rgbRed :=(((-1)*s2[x-1].rgbRed)+
((-1)*s2[x].rgbRed)+
((-1)*s2[x+1].rgbRed)+
((-1)*s1[x-1].rgbRed)+
( (8)*s1[x].rgbRed)+
((-1)*s1[x+1].rgbRed)+
((-1)*s0[x-1].rgbRed)+
((-1)*s0[x].rgbRed)+
((-1)*s0[x+1].rgbRed)) div K+128;
sr[x].rgbGreen := sr[x].rgbRed;
sr[x].rgbBlue := sr[x].rgbRed;
end;
end;
end;
|