Показать сообщение отдельно
  #10  
Старый 26.07.2010, 23:53
Аватар для urahara
urahara urahara вне форума
Новичок
 
Регистрация: 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
Ответить с цитированием