将 GDI 函数与 WCS 一起使用

图形设备接口 (使用或操作颜色数据的 GDI) 中有多种功能。 有些启用了与 WCS 一起使用,而有些则不支持。 以下 GDI 函数与 ICM 相关:

使用 WCS 的设备上下文函数

函数 说明
CreateCompatibleDC 如果设备上下文 (通过其 hdc 参数传递给此函数的 DC) 为 ICM 启用,则该函数创建的 DC 也已启用 ICM。 源和目标颜色空间在 DC 中指定。
CreateDC 可以通过将 pInitData 参数指向的 DEVMODE 结构的 dmICMMethod 成员设置为适当的值来启用 ICM。 有关详细信息,请参阅有关 DEVMODE 结构的平台 SDK 中的文档。
ResetDC hdc 参数指定的设备上下文的颜色配置文件将根据 lpInitData 参数指定的 DEVMODE 结构中的信息进行重置。

 

使用 WCS 的笔和画笔函数

函数 说明
画笔函数 创建画笔时不执行颜色管理。 但是,将画笔选入启用了 ICM 的 DC 时,将执行颜色管理。
CreatePen 创建笔时不执行颜色管理。 但是,将画笔选入启用了 ICM 的 DC 时,将执行颜色管理。
ExtCreatePen 创建笔时不执行颜色管理。 但是,将画笔选入启用了 ICM 的 DC 时,将执行颜色管理。
SelectObject 如果要选择的对象是画笔或笔,则执行颜色管理。
SetDCBrushColor 如果启用了 WCS,则执行颜色管理。
SetDCPenColor 如果启用了 WCS,则执行颜色管理。

 

使用 WCS 的文本输出函数

函数 说明
SetBkColor 如果启用了 WCS,则执行颜色管理。
SetTextColor 如果启用了 WCS,则执行颜色管理。

 

使用 WCS 的位图函数

函数 说明
BitBlt 发生 blits 时,不执行颜色管理。
CreateDIBitmap fuUsage 参数指定 lpbmi 参数指向的 BITMAPINFO 结构的 bmiColors 成员包含或不包含颜色信息。 如果没有,则不对此位图执行颜色管理。 位图必须使用 BITMAPINFO 结构版本 4 或版本 5 才能启用颜色管理。 创建位图后,生成的位图的内容与颜色不匹配。
CreateDIBSection 如果通过 pbmi 参数传递的 BITMAPINFO 结构不是版本 4 或版本 5,则不执行颜色管理。 如果是版本 4 或 5,则启用颜色管理,并且指定的颜色空间与位图相关联。
MaskBlt 发生 blits 时,不执行颜色管理。
SelectObject 如果对象是使用 CreateDIBSection 创建的位图,则执行颜色管理。 位图的颜色空间用作目标颜色空间。
SetDIBits 执行颜色管理。 如果指定的 BITMAPINFO 结构不是版本 4 或版本 5,则当前 DC 的颜色配置文件将用作源颜色空间配置文件。 如果没有,则使用 sRGB 空间。 如果指定的 BITMAPINFO 结构为版本 4 或版本 5,则位图标头中指定的颜色空间配置文件将用作源颜色空间配置文件。
SetDIBitsToDevice 执行颜色管理。 如果指定的 BITMAPINFO 结构不是版本 4 或版本 5,则当前设备上下文的颜色配置文件将用作源颜色空间配置文件。 如果没有,则使用 sRGB 颜色空间。 如果指定的 BITMAPINFO 结构为版本 4 或版本 5,则与位图关联的颜色空间配置文件将用作源颜色空间。
SetDIBColorTable 不执行颜色管理。
StretchBlt 发生 blits 时,不执行颜色管理。
StretchDIBits 执行颜色管理。 如果指定的 BITMAPINFO 结构不是版本 4 或版本 5,则当前 DC 的颜色配置文件将用作源颜色空间配置文件。 如果没有,则使用 sRGB 空间。 如果指定的 BITMAPINFO 结构为版本 4 或版本 5,则位图标头中指定的颜色空间配置文件将用作源颜色空间配置文件。