调色板? Wait online(50分)

  • 主题发起人 主题发起人 金少
  • 开始时间 开始时间

金少

Unregistered / Unconfirmed
GUEST, unregistred user!
如何创建一个24色的调色板?
 
procedure TForm1.Button1Click(Sender: TObject);
var
pal: PLogPalette;
hpal: HPALETTE;
i: Integer;
begin
pal := nil;
Randomize;

try //首先必须分配内存
GetMem(pal, sizeof(TLogPalette) + sizeof(TPaletteEntry) * 24);
pal.palVersion := $300; //颜色版本号
pal.palNumEntries := 24; //颜色数

for i := 0 to 24 do //各个颜色号对应的颜色的RGB值
begin
pal.palPalEntry.peRed := 255;
pal.palPalEntry.peGreen := Random(229);
pal.palPalEntry.peBlue := Random(229);
end;
hpal := CreatePalette(pal^);
if hpal <> 0 then
Image1.Picture.Bitmap.Palette := hpal;

{设置新的颜色到DIB调色板}


finally
FreeMem(pal);
end;
end;
 
那256色呢, 难道24色比256色分配内存还小吗?
 
你说的是24位色吧?这是不需要调色板的。
4色,16色,256色是需要调色板的,
但是16位色,24位色 ,32位色是不需要调色板的。
因为他们的色彩空间已经很大了,没有必要使用调色板。
使用调色板是因为色彩空间小的时候为了具体应用而使用的一种手段。
 
他说的是24色
 
噢, 不好意思, 是24bit色!
不需用调色板吗?
 
24bit还要什么调色板?真是ft,DarwinZhang讲的没错,256色(含256)采用调色板
 
呵呵,24位调色板!!!
那要多少色彩表啊,内存成垃圾站了。
24位正好对应RGB,还要调色板干嘛!!!
 
24位是真彩色,即一个像素点用3个字节表示R、G、B颜色,不需要调色板。而256色位图,其一个像素点的颜色用一个索引号,对应调色板中256种颜色的一种。
 
后退
顶部