Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.23;
Скачать: CL | DM;

Вниз

Как правильно работать с палитрой   Найти похожие ветки 

 
Priest   (2009-06-23 14:59) [0]

Есть такой код

procedure InitBitmapPallete(Bmp:TBitmap);
var
j: Byte;
LogPalette: TMaxLogPalette;
PLogPal: PLogPalette;
begin
 with LogPalette do
 begin
   palVersion := $0300;
   palNumEntries := 256;
   for j := 0 to 255 do
     with palPalEntry[j] do
       begin
        peRed := j; //$FF;
        peGreen := j;
        peBlue := j; //0;
        peFlags := 0;
       end;
 end; //with LogPalette do
 PLogPal := @LogPalette;
 Bmp.PixelFormat := pf8bit;
 Bmp.Palette := CreatePalette(PLogPal^);
end;


В конце я  пишу CreatePalette. Не будет ли утечек памяти? Должен ли я в конце работы освободить палитру?


 
Sapersky   (2009-06-23 16:45) [1]

Я бы порекомендовал использовать FastLIB:
http://sapersky.narod.ru/files/FastLIBv389i.rar
Работа с палитрой там на порядок удобнее.


 
Priest   (2009-06-23 17:45) [2]

К сожалению код старый, поэтому не хочу сильно модифицировать


 
Sapersky   (2009-06-24 14:46) [3]

Cудя по исходникам TBitmap - он удаляет палитру сам:

procedure TBitmapImage.FreeHandle;
begin
<..>
 InternalDeletePalette(FPalette);
 FPalette := 0;
end;

procedure TBitmap.SetPalette(Value: HPALETTE);
var
 AHandle: HBITMAP;
 DIB: TDIBSection;
begin
// при назначении новой палитры удаляет старую
 if FImage.FPalette <> Value then
 begin
   with FImage do
     if (Value = 0) and (FRefCount = 1) then
     begin
       InternalDeletePalette(FPalette);
       FPalette := 0;
     end
<..>



Страницы: 1 вся ветка

Текущий архив: 2009.08.23;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.007 c
15-1245756951
tesseract
2009-06-23 15:35
2009.08.23
FireBird прошёл в финалисты Community choice


15-1245816012
Дмитрий С
2009-06-24 08:00
2009.08.23
Поиск точки


15-1245496380
Palladin
2009-06-20 15:13
2009.08.23
Это не цикл это рекурсия


15-1244032296
Игорь Шевченко
2009-06-03 16:31
2009.08.23
сделать для формы (фрейма, WinControl) аналог Begin/EndUpdatе


1-1212323400
Rust
2008-06-01 16:30
2009.08.23
Динамическое создание меню по XML-файлу