Следующая статья: Пример защиты типа SHAREWARE.
Пример создания и применения палитры для 256-цветных изображений. Вам нужны API-функции SelectPalette или RealizePalette, в зависимости от того, как вы предполагаете использовать изображение.
procedure TForm1.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^);
// назначаем новую палитру
for BitMap.Palette:= hPal;
finally FreeMem(pNewPal, lSize);
end;
end;