SHGetInverseCMAP 函数 (shlwapi.h)

[此函数可通过 Windows XP 和 Windows Server 2003 使用。 在后续版本的 Windows 中,它可能已更改或不可用。]

检索半色调调色板的反色表映射。

语法

LWSTDAPI SHGetInverseCMAP(
  [out] BYTE  *pbMap,
  [in]  ULONG cbMap
);

参数

[out] pbMap

类型: BYTE*

指向接收反颜色表映射的 BYTE数组的 指针,或指向 LPBYTE 的指针,该指针接收指向反向颜色表映射的缓存副本的指针,具体取决于 cbMap 参数的值。

[in] cbMap

类型: ULONG

pbMap 指向的缓冲区的大小,该缓冲区也定义其内容。 识别两个值。

(sizeof (BYTE*) )

pbMap 指向的缓冲区接收指向反颜色映射表的缓存副本的指针。

(32768)

pbMap 指向的缓冲区接收反颜色映射表的副本。 缓冲区的大小必须正好为 32,768 字节。

返回值

类型: HRESULT

如果此函数成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

反颜色映射表是一个包含 32,768 字节的表。 它包含半色调调色板中的颜色索引。 每个索引都存储在缓冲区中对应于以 555 格式表示的特定 RGB 值的位置。 通过这些配对,可以在半色调调色板中找到与原始颜色接近的颜色。

例如,用于确定半色调调色板中与颜色 #306040 接近的颜色的方法如下:

  1. 将颜色分解为红色、绿色和蓝色分量。 在这种情况下,红色分量为0x30,绿色分量为0x60,蓝色分量为0x40。
  2. 将颜色重新组合为 555 格式。 此处显示了将 24 位 RGB 颜色减少到 555 格式的公式。
    ((red / 8) << 10) + ((blue / 8) << 5) + (green / 8)
    

    在此示例中,555 格式的值为 ( (0x30 / 8) << 10) + ( (0x60 / 8) << 5) + (0x40 / 8) = 6536。

  3. 存储在反向颜色映射表中位置 6536 的索引值是半色调调色板中颜色的索引,该索引是颜色 #306040 的合理近似值。

要求

要求
最低受支持的客户端 Windows 2000 专业版、Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 shlwapi.h
Library Shlwapi.lib
DLL Shlwapi.dll (5.0 或更高版本)

另请参阅

CreateHalftonePalette

GetNearestColor