Вниз
Скачать: 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-1209693672
Поп Гапон
2008-05-02 06:01
2008.06.15
В США проблему нефти решили травой.


2-1211476711
assassin8899
2008-05-22 21:18
2008.06.15
SQL


15-1209988486
БарЛог
2008-05-05 15:54
2008.06.15
Где хранить "корзину" в интернет-магазине?


10-1143016919
ivb2001
2006-03-22 11:41
2008.06.15
Запуск DCOM-сервера клиентом с рабочей станции


2-1211192209
kla$
2008-05-19 14:16
2008.06.15
interbase(проблема ввода данных)




   Наверх