Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



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


15-1209584951
wl
2008-04-30 23:49
2008.06.15
ftp server for windows


6-1189062586
tytus
2007-09-06 11:09
2008.06.15
WinSock2 - и номера протоколов


15-1210083434
svetik
2008-05-06 18:17
2008.06.15
путь к рабочему столу не используя реестр


15-1209808656
Andy BitOff
2008-05-03 13:57
2008.06.15
BSOD — ndis.sys




   Наверх