Идёт загрузка страницы...

htp://aptem.net.ru





Delphi 1

Создание и использование 256-цветной палитры

Вот пример того, как можно создать и использовать палитру для 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 do
begin
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;

- Bob Teller [000826]