IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> CreatePalette, ERROR_NOT_ENOUGH_MEMORY?!
сообщение
Сообщение #1


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Решил я из 32-битного БМП сделать 4-битный, и чтобы при этом применялась не абы какая палитра, а умная, найденная квантованием цвета. Ну составил я палитру, а дальше какие-то что технические закидоны пошли:

type
T4Arr = array [0 .. 3] of byte;
P4Arr = ^T4Arr;
TPalette = array [0 .. 15] of T4Arr;

var
pal: record
version: word;
num: word;
a: TPalette
end;

pal_: LOGPALETTE absolute pal;
// работать сразу с LOGPALETTE нельзя из-за длины массива в 1 элемент

H: HPALETTE;

B: TBitmap;

begin
...
pal.version := 0;
pal.num := 16;
pal.a := Palette;

H := CreatePalette( pal_ ); // возвращает 0

Caption := IntToStr(GetLastError); // выводит 8

B.PixelFormat := pf4bit; // в таком порядке, или наоборот, я не знаю?
B.Palette := H;
end;



Почему так?
Я прочитал msdn, но это не помогло, так как там нет рабочего примера. Что писать в номер версии, и что это вообще за поле (зачем оно вообще), я тоже не понял, там ничего не написано. Я пробовал гуглить, но гугл выдал кучу бесплезных сайтов, с 1 строчкой типа "CreatePalette - создаёт палитру по структуре LOGPALETTE" (причём слово LOGPALETTE даже синим не подчёркнуто, перейти нельзя). Ай спасибо, блин, Капитан Очевидность!

Так вот, как правильно создавать палитру, и что означает ошибка 8 (то есть, если верить msdn, ERROR_NOT_ENOUGH_MEMORY)?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


О, спасибо, $0300 заработало.
Оказывается, в МСДН это тоже написано. В самом низу страницы. Я это понял, ища глазами число $0300. А не знал бы - не понял бы, что надо прочитать до самого конца.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.05.2024 5:40
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name