Delphi 1
Создание и использование 256-цветной палитры
Вот пример того, как можно создать и использовать палитру для 256-цветных изображений. Вам, вероятно, необходимо использовать API функции SelectPalette и RealizePalette, в зависимости от того как вы хотите использовать ваше изображение.
procedure TfrmMain.MakePalette(forBitMap: TBitMap); var pNewPal : PLogPalette;
lSize : LongInt;
nCntr : Byte;
beginlSize := 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]