Главная страница
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.019 c
14-86501
Карелин Артем
2003-12-04 14:33
2003.12.26
Что может висеть на 7000 порту?


1-86373
sad
2003-12-15 11:06
2003.12.26
Аналог опертора макроподстановки Foxpro (&) в Delphi


14-86519
NeyroSpace
2003-12-03 11:54
2003.12.26
Проапгрейтился... до коматоза


11-86329
Ал
2003-04-10 14:04
2003.12.26
Как избежать увелич. шрифта в RichEdit, если в Win - крупный?


1-86419
CaS
2003-12-14 04:13
2003.12.26
hIcon в TPicture