CreateColorTransformA 函数 (icm.h)

创建应用程序可用于执行颜色管理的颜色转换。

语法

HTRANSFORM CreateColorTransformA(
  LPLOGCOLORSPACEA pLogColorSpace,
  HPROFILE         hDestProfile,
  HPROFILE         hTargetProfile,
  DWORD            dwFlags
);

参数

pLogColorSpace

指向输入 LOGCOLORSPACEA 的指针。

hDestProfile

目标设备的配置文件的句柄。 函数确定 HPROFILE 是包含国际颜色联盟 (ICC) 还是 Windows 颜色系统 (WCS) 配置文件信息。

hTargetProfile

目标设备的配置文件的句柄。 函数确定 HPROFILE 是包含 ICC 还是 WCS 配置文件信息。

dwFlags

指定用于创建转换的控件的标志。 请参阅“备注”。

返回值

如果此函数成功,则返回值是颜色转换的句柄。

如果此函数失败,则返回值为 NULL。 有关扩展的错误信息,请调用 GetLastError

注解

如果目标配置文件为 NULL,则转换将从源逻辑颜色空间转换为目标配置文件。 如果提供了目标配置文件,则转换将从源逻辑颜色空间到目标配置文件,然后转换到目标配置文件。 这允许预览目标设备上的目标设备的输出。

dwFlags 中的值仅用作提示。 颜色管理模块必须确定使用它们的最佳方式。

Windows Vista:添加了三个可用于 dwFlags 的新标志:

标志 描述
PRESERVEBLACK 如果设置了此位,则转换引擎将插入相应的黑色生成 GMMP 作为转换序列中的最后一个 GMMP。 此标志仅适用于纯 WCS 转换。
SEQUENTIAL_TRANSFORM 如果设置了此位,则会对图像中的每个像素执行 WCS 处理管道中的每个步骤,并且不会生成优化的颜色转换。 此标志仅适用于纯 WCS 转换。限制:使用SEQUENTIAL_TRANSFORM标志集创建的转换只能在创建它的线程中使用,并且一次只能用于一个颜色转换调用。 COM 必须在创建顺序转换之前进行初始化,并且必须在转换对象的生存期内保持初始化状态。
WCS_ALWAYS 如果设置了此位,即使是所有 ICC 转换也将使用 WCS 代码路径。

注意

Windows Vista SDK 的 icm.h 标头中无意中省略了SEQUENTIAL_TRANSFORM。 如果要使用 SEQUENTIAL_TRANSFORM 标志,请在应用程序中定义它,如下所示:#define SEQUENTIAL_TRANSFORM 0x80800000

有关详细信息,请参阅 CMM 转换创建标志。 所有类型转换都支持提及的所有标志,但FAST_TRANSLATE除外,它仅适用于纯 ICC 到 ICC 转换。

CreateColorTransform 函数在设备上下文外部使用。 从颜色配置文件转换为同一颜色配置文件时,颜色可能会改变。 这是由于精度误差造成的。 因此,在这些情况下不应执行颜色转换。

作为转换目标的任何配置文件都需要 B2Ax 标记。

对 ICC ColorSpace 配置文件的 WCS 转换支持仅限于 RGB 颜色空间配置文件。 以下 ICC 配置文件类型不能用于 CITE 处理的转换(混合 WCS/ICC 转换或具有 WCS_ALWAYS 集的全 ICC 转换):

  • 非 RGB ColorSpace 配置文件
  • NamedColor 配置文件
  • n 通道配置文件 (其中 n > 8)
  • DeviceLink 配置文件
  • 抽象配置文件

要求

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

另请参阅