Показать сообщение отдельно
  #13  
Старый 03.06.2013, 15:07
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Если начнешь работать с ScanLine, то там работа идет с форматом RGB. И еще, Очень уж много "IF" в цикле, работу это тоже не очень ускоряет (хоть и не очень замедляет). Лучше уж использовать в массиве вместо значений 1,2,3... уже готовые цвета - 255, 32768, 16711680.
Пример использования ScanLine:
Код:
type
  TRGBArray = array[0..32767] of TRGBTriple;
  PRGBArray = ^TRGBArray;
var
  X, Y     : Integer;
  Rows : PRGBArray;
Begin
 for y := 0 to Bitmap.Height - 1 do
  begin
    rows := Bitmap.ScanLine[y];
    for x := 0 to Bitmap.Width - 1 do
      begin
        //здесь идут все проверки и задается цвет соотв. пикселя - в
        // системе RGB 
        rows[x].rgbtRed := 255;
        rows[x].rgbtGreen := 128;
        rows[x].rgbtBlue := 0;
    end;
  end;
end;
Пользуйся функциями GetRValue(), GetBValue(), GetGValue(), RGB(,,).
Ответить с цитированием