Вот пример того, как можно создать и использовать палитру для 256-цветных
изображений. Вам, вероятно, необходимо использовать API функции SelectPalette и
RealizePalette, в зависимости от того как вы хотите использовать ваше
изображение.
procedure TfrmMain.MakePalette(forBitMap: TBitMap);
var
pNewPal: PLogPalette;
lSize: LongInt;
nCntr: Byte;
begin
lSize := SizeOf(TLogPalette) +
SizeOf(TPaletteEntry) * 256;
try
GetMem(pNewPal, lSize);
pNewPal^.palNumEntries := 256;
pNewPal^.palVersion := $300;
{$R-}{выключаем контроль допустимого диапазона}{создаем данные палитры...}for nCntr := 0 to 254 dobegin
pNewPal^.palPalEntry[nCntr].peRed := nCntr + 20;
pNewPal^.palPalEntry[nCntr].peGreen := nCntr + 20;
pNewPal^.palPalEntry[nCntr].peBlue := nCntr + 20;
pNewPal^.palPalEntry[nCntr].peFlags := pc_nocollapse;
end;
{$R+}{включаем контроль допустимого диапазона}{удаляем старый hPal; предохраняемся от утечки памяти}
DeleteObject(hPal);
{создаем новую палитру на основе новых значений}
hPal := CreatePalette(pNewPal^);
{назначаем новую палитру}
forBitMap.Palette := hPal;
finally
FreeMem(pNewPal, lSize);
end;
end;
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Создание и использование 256-цветной палитры", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!