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

Вниз

Странный косяк с палитрой у 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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.016 c
15-1209891636
Kerk
2008-05-04 13:00
2008.06.15
Производительность и PHP


11-1190055258
rainstuff
2007-09-17 22:54
2008.06.15
ScrollBox и свойства Left, Top


2-1211452478
Павел
2008-05-22 14:34
2008.06.15
TStringList; в Дельфи 6 - где объявить?


15-1209529452
@!!ex
2008-04-30 08:24
2008.06.15
Как испоганить исходник??


15-1209822144
Slider007
2008-05-03 17:42
2008.06.15
С днем рождения ! 3 мая 2008 суббота