Телефон: +7 (926) 245-03-63

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

Следующая статья: Пример защиты типа 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;