Форум: "Media";
Текущий архив: 2003.12.26;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "Media";
Текущий архив: 2003.12.26;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.008 c