What Are Palettes?
基于调色板的页面需要调色板才能真正有意义的显示出来.一个基于调色板的页面,通常也被称作一个"色彩索引"页面,仅仅是一些数字的集合,其中的每一个数字代表一个像素.每一个数字的值都对应于一个色彩表(color table)中的项,这个表告诉 DirectDraw 对这个像素使用什么样的颜色. DirectDrawPalette 对象,通常简称为"调色板",给你提供了一个及其方便的途径来管理调色板.那些使用16位或更高位像素格式的页面并不使用调色板.
提供 DirectDrawPalette 对象是为了拥有直接操作 16 和 256 色调色板的特性(一个 DirectDrawPalette 对象通常与一个 DirectDrawSurface 对象相依属).一个 DirectDrawPalette 对象保留了一个从 0 到 255 的 256 色调色板的入口;它不保留 16 色调色板的任何入口.它允许直接对色彩表(color table)的直接操作.一个色彩表是一系列颜色值(典型的是 RGB 三个一组).这个表可以包含 16 或 24 位的 RGB 色彩入口,代表与每一个索引相对应的颜色.对 16 色调色板来说,色彩表可以包含另一个 256 色调色板的索引.调色板被材质图,离屏页面(off-screen surfaces),覆盖页面(overlay surfaces)所支持,它们并不需要与主页面(primary surface)拥有同样的调色板.
你可以通过调用 IDirectDraw4::CreatePalette 函数来创建一个调色板.该函数将返回一个指向 IdirectDrawPalette 接口的调色板对象的指针.你可以使用该接口的函数来操作调色板入口,获得关于调色板对象能力的信息,或初始化该对象(如果你用 CoCreateInstance 函数创建它).
你可以通过调用 IDirectDrawSurface4::SetPalette 函数将一个调色板连接到一个页面上.一个调色板可以被连接到若干个页面.
DirectDrawPalette 对象为一个 8 位的调色板保留了从 0 到 255 的入口,除非你指定了 DDPCAPS_ALLOW256 标志请求所有这些入口都可以被你所用.
通过调用 IDirectDrawPalette::GetEntries, 应用程序可以获得这些表的入口,并且可以通过 IDirectDrawPalette::SetEntries 改变这些入口.这个函数有一个 dwFlags 参数,指定对于调色板的改动是否立即生效.
IDirectDrawPalette::SetEntries
该函数立即改变一个 DirectDrawPalette 对象的调色板入口。
HRESULT SetEntries(
DWORD dwFlags,
DWORD dwStartingEntry,
DWORD dwCount,
LPPALETTEENTRY lpEntries
);
参数
dwFlags
该参数目前未用,必须设为0。
dwStartingEntry
要改变的第一个调色板入口。
dwCount
要改变的调色板入口个数。
lpEntries
调色板入口的地址。如果给调色板设置了 DDPCAPS_8BITENTRIES 标志(为索引调色板),则每个入口为1字节,其余类型调色板的每个入口为4字节。其内容为颜色值的描述。
SetEntries()的使用(转)
最新推荐文章于 2021-05-26 13:20:09 发布