Показать сообщение отдельно
  #11  
Старый 01.06.2011, 18:43
Cramol Cramol вне форума
Прохожий
 
Регистрация: 31.05.2011
Сообщения: 13
Репутация: 10
По умолчанию

Черно-белой делаю так:

Код:
function CreateGrayBmp (Source: TBitmap): TBitmap;
var
  Table: array[Byte] of TRGBQuad;
  I: Integer;
begin
  Result := TBitmap.Create;
  with Result do
  begin
    PixelFormat := pf8Bit;
    Width := Source.Width;
    Height := Source.Height;
    for I := Low(Table) to High(Table) do
      with Table[i] do
      begin
        rgbRed := I;
        rgbGreen := I;
        rgbBlue := I;
        rgbReserved := 0;
      end;
    if (SetDIBColorTable(Canvas.Handle, Low(Table), High(Table), Table) = 0) then
      RaiseLastWin32Error;
    Canvas.Draw(0, 0, Source);
  end;
end;

Остался вопрос лишь с квадратами 10х10, которые надо преобразовать в один цвет целиком 10х10, исходя из того пикселей какого цвета в этом квадрате больше.
Ответить с цитированием