
26.07.2010, 23:53
|
 |
Новичок
|
|
Регистрация: 16.01.2010
Сообщения: 86
Репутация: 35
|
|
собрал из вашего:
Код:
procedure ParseBg(bmp: TBitmap);
type
pRGBArray = ^TRGBArray;
TRGBArray = array[0..0] of TRGBTriple;
var
x, y, sx, sy, w, h: integer;
screenb:TBitmap;
line1, line2: pRGBArray;
begin
w := bmp.Width;
h := bmp.Height;
screenb := TBitmap.Create;
screenb.Width := w;
screenb.Height := h;
bmp.PixelFormat := pf24bit;
screenb.PixelFormat := pf24bit;
sx:=(Screen.Width - w) div 2;
sy:=(Screen.Height - h) div 2;
BitBlt(screenb.Canvas.Handle, 0, 0, w, h, GetDC(0), sx, sy, SRCCOPY);
for y:=0 to h - 1 do
begin
line1 := bmp.ScanLine[y];
line2 := screenb.ScanLine[y];
for x:=0 to w - 1 do
begin
with line1[x] do
if (rgbtRed = rgbtGreen) and (rgbtGreen = rgbtBlue) then
begin
rgbtRed := line2[x].rgbtRed * rgbtRed shr 8;
rgbtGreen := line2[x].rgbtGreen * rgbtGreen shr 8;
rgbtBlue := line2[x].rgbtBlue * rgbtBlue shr 8;
end;
end;
end;
screenb.Free;
end;
__________________
Arrrgh
|