Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.08.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.005 c
2-1245765164
Priest
2009-06-23 17:52
2009.08.23
Проблема с TBitmap


4-1215200494
Riply
2008-07-04 23:41
2009.08.23
AppInit_Dll - механизм работы.


2-1245681294
marantz85
2009-06-22 18:34
2009.08.23
Как переписать данные из динамического массива в memorystream?


2-1245923503
@!!ex
2009-06-25 13:51
2009.08.23
Как установить окну пустой курсор?


15-1245529804
Юрий
2009-06-21 00:30
2009.08.23
С днем рождения ! 21 июня 2009 воскресенье





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский