Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.13;
Скачать: CL | DM;

Вниз

Быстрый доступ до цвета в TBitmap   Найти похожие ветки 

 
Ihor   (2002-01-31 16:40) [0]

Привет всем!

У меня возникла проблема, мне нужно быстрый доступ до пикселя битмапе. То есть мне нужно для каждово пикселя получить отдельно три компонента цвета (R G B). И как их потом собрать опять.
А может быть не толька 24 битная.

А через aBitmap.Canvas.Pixels[x,y] очень долго : -(((

Помогите, плз.

Всем спасибо.


 
MBo ©   (2002-01-31 16:47) [1]

ScanLine быстрее, а еще лучше GetDiBits


 
Ihor   (2002-01-31 16:55) [2]

Но как из 8, 16 или 32 битов R G B достать ?


 
MBo ©   (2002-01-31 17:19) [3]

по разному. 8 бит - надо читать палитру и соотносить номер цвета по инлкусу в палитре, 32 - просто значения.

вот пример 8 bit заполняет градациями серого
для чтения вместо GetBitmapBits может,придется исп. GetDIBits - обращение сложнее (в хелпе написано, что первая не поддерживается, сам не пробовал).

для 24-32 надо будет массив TRGBQuad или TRGBTriple.
посмотрю у себя.

на этом сайте есть статья об устройстве bmp - почитай

var a:array[0..255,0..255] of byte;
ct:array[0..255] of TRGBQuad;
b:tbitmap;
i,j:integer;
begin
b:=tbitmap.create;
b.pixelformat:=pf8bit;
b.Width := 256;
b.Height := 256;
for i:=0 to 255 do begin
ct[i].rgbRed:=i;
ct[i].rgbBlue:=i;
ct[i].rgbGreen:=i;
ct[i].rgbReserved:=0;
end;
for i:=0 to 255 do for j:=0 to 255 do a[i,j]:=trunc(sqrt(i*j));
SetDIBColorTable(b.canvas.Handle,0,$100,ct);
SetBitmapBits(b.Handle, sizeof(a),@a);
Image1.picture.assign(b);
b.free;


 
Ihor   (2002-01-31 17:36) [4]

Thanks



Страницы: 1 вся ветка

Текущий архив: 2002.06.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.009 c
3-39972
Руслан Хайбуллин
2002-05-22 09:53
2002.06.13
Сортировка данных в TADOTable


1-40098
kolobok11
2002-06-02 23:11
2002.06.13
Help ! Не могу получить имя файла *.dll с помощью TOpenDialog.


1-40075
Goofball
2002-05-31 21:49
2002.06.13
Как, нажав на кнопку, получить обозреватель для CD?


7-40193
EsKor
2002-03-18 08:20
2002.06.13
Таймауты при чтении COM-порта


1-39981
SoloD
2002-06-03 08:41
2002.06.13
Настройка Debuggera