如何操作一个 256色的 bitmap 的调色板??? ( 积分: 30 )

  • 主题发起人 主题发起人 QSmile
  • 开始时间 开始时间
Q

QSmile

Unregistered / Unconfirmed
GUEST, unregistred user!
如何操作一个 256色的 bitmap 的调色板???
我在内存中建一个 256色的bitmap 想指定它的调色板,如何做???
 
如何操作一个 256色的 bitmap 的调色板???
我在内存中建一个 256色的bitmap 想指定它的调色板,如何做???
 
var
Pal: PLogPalette;
i: Integer;
begin
GetMem(Pal, sizeof(TLogPalette)+sizeof(TPaletteEntry) * 255); // 分配256个调色板值
for i := 0 to 255 do
begin
pal.palpalentry.peRed := ...
pal.palpalentry.peGreen := ...
pal.palpalentry.peBlue := ...
end;
Bitmap.Palette := CreatePalette(Pal^);
end;
 
我的关于图像的所有问题都是你回答的,高手呀。

我也在Help 里看到这个用法了。
但最好在函数前后加上 {$R-} {$R+}
 
我还有一个问题,就是如果 我用了调色板中不存在的颜色来作了图,会是什么样的呢?
 
我试了一下,好象它会用最接收的颜色来代替

还有一个问题
在 Delphi 中如上面的用法,我用了 CreatePalette(Pal^); 来创建了一个调色板的句柄,程序退出时要不要显现的 DeleteObject 呢????Delphi 能不能给我自动完成呢?
 
首先CreatePalette,
然后SelectPalette,
最后RealizePalette。

Delphi不会自动完成这些的吧,没验证过
 
我用 MemProof 看了一下,好象TBitmap 会自动帮我释放
 
多人接受答案了。
 
后退
顶部