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

Вниз

CreateDIBSection - 8 бит - палитра ?   Найти похожие ветки 

 
Mishel   (2003-08-28 10:19) [0]

Не въеду как палитру обявить в структуре для случая 256 цветов - 8 бит. Делаю что-то типа:

procedure TForm1.CreateBitmap(aSX, aSY: Integer);
var
BInfo: tagBITMAPINFO;
Scr: Pointer;
SX, SY: Word;

begin
SX := aSX; SY := aSY;
BInfo.bmiHeader.biSize := SizeOf( tagBITMAPINFOHEADER );
BInfo.bmiHeader.biWidth := SX;
BInfo.bmiHeader.biHeight := -SY;
BInfo.bmiHeader.biPlanes := 1;
BInfo.bmiHeader.biBitCount := 8;
BInfo.bmiHeader.biCompression := BI_RGB;
BInfo.bmiHeader.biClrUsed := 0;
BInfo.bmiHeader.biClrImportant:= 0;
//
BInfo.bmiColors[ 0 ].rgbBlue := $0;
BInfo.bmiColors[ 0 ].rgbGreen := $0;
BInfo.bmiColors[ 0 ].rgbRed := $0;
BInfo.bmiColors[ 0 ].rgbReserved := $0;

ScrBitmap := TBitmap.Create();
ScrBitmap.Handle := CreateDIBSection(Canvas.Handle, BInfo, DIB_RGB_COLORS, Scr, 0, 0);
//
ZeroMemory(Scr, SX * SY);

Вроде нужно объявить 256 компонентов для BInfo.bmiColors, а куда?
BInfo.bmiColors имеет размер 1 элемент? Без палитры чер-те что. В пробном куске одни цвета, вставляю в проект - цвета плывут.


 
MBo ©   (2003-08-28 10:44) [1]

проще всего так

TBInfo = record
Header: TBitmapInfoHeader;
Cols: array[0..255] of TPaletteEntry;
end;

можно и выделять память под указатель на TBitmapInfo с размером - его sizeOf+256*Sizeof(TPaletteEntry) и отключать проверку диапазона для доступа к массиву



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

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

Наверх




Память: 0.46 MB
Время: 0.011 c
6-86467
XeON
2003-10-25 21:53
2003.12.26
Indy POP3 Client


14-86527
konstantinov
2003-12-03 20:30
2003.12.26
Как удалить запрос на выбор ОС?


14-86537
Sergey13
2003-12-03 09:04
2003.12.26
Yaffil + Firebird=FireYaffil ?


3-86306
Chery
2003-12-01 12:50
2003.12.26
Подключить к форме хранимой в Dll таблицу, Table - на глав. форме


3-86282
scorpi
2003-12-02 14:29
2003.12.26
Добавление поля в таблицу