Форум: "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.007 c