cmTranslateRGBs 函数 (icm.h)

[CMTranslateRGBs 不再可用于 Windows Vista。]

使用颜色转换将位图从一个 颜色空间 转换为另一个颜色空间。

语法

BOOL CMTranslateRGBs(
  HCMTRANSFORM hcmTransform,
  LPVOID       lpSrcBits,
  BMFORMAT     bmInput,
  DWORD        dwWidth,
  DWORD        dwHeight,
  DWORD        dwStride,
  LPVOID       lpDestBits,
  BMFORMAT     bmOutput,
  DWORD        dwTranslateDirection
);

参数

hcmTransform

指定要使用的颜色转换。

lpSrcBits

指向要平移的位图。

bmInput

指定输入位图格式。

dwWidth

指定输入位图中每个扫描行的像素数。

dwHeight

指定输入位图中的扫描行数。

dwStride

指定从输入位图中一个扫描行的开头到下一个扫描行的开头的字节数。 如果 dwStride 设置为零,则 CMM 应假定扫描行已填充,以便 与 DWORD 对齐。

lpDestBits

指向要放置转换位图的目标缓冲区。

bmOutput

指定输出位图格式。

dwTranslateDirection

指定用于转换的转换方向。 此参数必须采用以下值之一。

含义
CMS_FORWARD

使用正向转换

CMS_BACKWARD

使用反向转换

返回值

从 Windows Vista 开始,默认 CMM (Icm32.dll) 将返回 FALSE,GetLastError 将报告ERROR_NOT_SUPPORTED。

Windows Server 2003、Windows XP 和 Windows 2000:

如果此函数成功,则返回值为 TRUE

如果此函数失败,则返回值为 FALSE。 如果函数不成功,CMM 应调用 SetLastError ,将上一个错误设置为 Winerror.h 中定义的有效错误值。

注解

从 Windows Vista 开始,不再需要 CMM 实现程序来实现此方法。

Windows Server 2003、Windows XP 和 Windows 2000:

导出此函数需要每个 CMM。

写入目标缓冲区时,CMM 应确保扫描行填充为 DWORD 对齐。

如果输入和输出格式与颜色转换不兼容,则此函数将失败。

如果输入和输出位图格式都是 3 通道、每像素 4 个字节(如BM_xRGBQUADS的情况),则应保留第 4 个字节并将其复制到输出缓冲区。

请注意,此函数必须支持就地转换。 也就是说,每当输出的内存占用小于或等于输入的内存占用量时,此函数必须能够转换位图颜色,即使源缓冲区和目标缓冲区相同。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
标头 icm.h

另请参阅