声明: property scanline[row: integer]: pointer read getscanline ;(只读)
//以下函数把位图变也灰度(可调节)
procedure graybitmap(abitmap: tbitmap; value: integer=0);
var
pixel: prgbtriple; //用来接收返回值
w, h: integer;
x, y: integer;
avg: integer;
begin
abitmap.pixelformat := pf24bit;
w := abitmap.width;
h := abitmap.height;
for y := 0 to h - 1 do
begin
pixel := abitmap.scanline[y];
for x := 0 to w - 1 do
begin
avg := ((pixel^.rgbtred + pixel^.rgbtgreen + pixel^.rgbtblue) div 3)+ value;
if avg > 240 then avg := 240;
pixel^.rgbtred := avg;
pixel^.rgbtgreen := avg;
pixel^.rgbtblue := avg;
inc(pixel);
end;
end;
end;
附定义: prgbtriple = ^trgbtriple;
trgbtriple = tagrgbtriple;
tagrgbtriple = packed record
rgbtblue: byte;
rgbtgreen: byte;
rgbtred: byte;
end;