Главная страница
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
1-86456
Zilog_
2003-12-13 11:28
2003.12.26
Как Tcolor преобразовать в шестнадцатиричное представление


3-86288
dj-amigo
2003-12-02 20:43
2003.12.26
Сортировка строк в DBGridEh


14-86541
Ske4er
2003-12-03 06:27
2003.12.26
Выключение монитора


1-86447
~GaMeRd~
2003-12-11 21:31
2003.12.26
Вид формы


3-86307
Chuha
2003-12-02 13:57
2003.12.26
Поиск строки! :(