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

Вниз

Странный косяк с палитрой у TBitmap   Найти похожие ветки 

 
TheBug ©   (2007-06-18 13:32) [0]

Необходимо отрисовывать черно-белые изображения. Для этого необходимо сгенирировать палитру. А потом для тестироавния рисую градиентную картинку и вывожу в Image (imgMap). Код такой.

type
 LogPal = record
   lpal : TLogPalette;
   dummy: Array[0..255] of TPaletteEntry;
 end;

procedure TMainForm.btnTestClick(Sender: TObject);
var
 palGrey: LogPal;
 P: PByteArray;
 i, j: integer;
 b: byte;
begin
 imgMap.Picture.Bitmap.PixelFormat := pf8bit;
 imgMap.Picture.Bitmap.Width := 256;
 imgMap.Picture.Bitmap.Height := 256;

 palGrey.lPal.palVersion := $300;
 palGrey.lPal.palNumEntries := 256;
 for b := 0 to 255 do
 begin
   palGrey.dummy[b].peRed := b;
   palGrey.dummy[b].peGreen := b;
   palGrey.dummy[b].peBlue := b;
   palGrey.dummy[b].peFlags := 0;
 end;

 imgMap.Picture.Bitmap.Palette := CreatePalette(palGrey.lpal);

 for i := 0 to imgMap.Picture.Bitmap.Height - 1 do
 begin
   P := imgMap.Picture.Bitmap.ScanLine[i];
   for j := 0 to imgMap.Picture.Bitmap.Width - 1 do
   begin
     P[j] := i;
   end;
 end;

 imgMap.Invalidate;
end;


Так вот. В нулевой строке, цвет не черный, как ожидалось, а какой-то зеленый. В чем тут проблема?


 
MBo ©   (2007-06-18 14:01) [1]

SetDIBColorTable попробуй


 
TheBug ©   (2007-06-18 14:49) [2]

Проблема была решена перенос локальных переменных в глобальные.
Но я так и не понял, почему так заработало.


 
MBo ©   (2007-06-18 15:07) [3]

>Проблема была решена перенос локальных переменных в глобальные.
Странно это.

Кстати,  LogPal у тебя некорректно описана - нулевой элемент таблицы уже есть в TLogPalette


 
TheBug ©   (2007-06-18 16:17) [4]

2 MBo
Код из хелпа...


 
MBo ©   (2007-06-18 16:38) [5]

заметь, что в хелпе используется массив, начиная с palPalEntry, а не с dummy[0]

GetSystemPaletteEntries(tempCanvas.Handle,0,256,SysPal.lpal.palPalEntry);


 
TheBug ©   (2007-06-18 21:08) [6]

2MBo
Косяк, ты прав...



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

Форум: "Media";
Текущий архив: 2008.06.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
2-1211353591
Mozgan
2008-05-21 11:06
2008.06.15
Поиск в базе


15-1209913573
Fredy314
2008-05-04 19:06
2008.06.15
Нужна помощь с JavaScript


8-1182159165
TheBug
2007-06-18 13:32
2008.06.15
Странный косяк с палитрой у TBitmap


15-1209748940
dr_creigan
2008-05-02 21:22
2008.06.15
Необычный вопрос =)


2-1211516042
AlekseyB
2008-05-23 08:14
2008.06.15
при нажатии на кнопку





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский