Показать сообщение отдельно
  #7  
Старый 31.05.2011, 23:51
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

ScanLine. Самый быстрый из нативных способов.
Еще быстрее только если через API строить картинку сразу в памяти а потом еще переделать в битмап. Но оно сложно и тебе не нужно. ScanLine'а должно хватить.

Ну и зачем делать какие-то преобразования. открываешь файл как бинарник и вычитываешь 3 байта. Из них формируешь цвет, т.к. компьютеру все-равно в каком виде это будет в середине. Ему выжны собственно значения, так что никаких преобразований не надо.

Код:
var
  Stream : TFileStream;
  r, g, b : Byte;
  c : TColor;
begin
  Stream := TFileStream.Create(...);
  ...
  Stream.ReadBuffer(r,SizeOf(Byte));  
  Stream.ReadBuffer(g,SizeOf(Byte));
  Stream.ReadBuffer(b,SizeOf(Byte));
  c := RGBToColor(r,g,b);
  ...
end;
Ответить с цитированием