ImageAttributes::SetOutputChannelColorProfile 方法 (gdiplusimageattributes.h)

ImageAttributes::SetOutputChannelColorProfile 方法设置指定类别的输出通道颜色配置文件。

语法

Status SetOutputChannelColorProfile(
  [in]           const WCHAR     *colorProfileFilename,
  [in, optional] ColorAdjustType type
);

参数

[in] colorProfileFilename

类型: const WCHAR*

颜色配置文件的路径名称。 如果颜色配置文件位于 %SystemRoot%\System32\Spool\Drivers\Color 目录中,则此参数可以是文件名。 否则,该参数必须是完全限定的路径名。

[in, optional] type

类型: ColorAdjustType

ColorAdjustType 枚举的元素,指定为其设置输出通道颜色配置文件的类别。 默认值为 ColorAdjustTypeDefault

返回值

类型: 状态

如果该方法成功,则返回 Ok,这是 Status 枚举的元素。

如果方法失败,它将返回 Status 枚举的其他元素之一。

注解

可以使用 ImageAttributes::SetOutputChannelImageAttributes::SetOutputChannelColorProfile 方法将图像转换为青色-品红色-黄色-黑色 (CMYK) 颜色空间并检查其中一个 CMYK 颜色通道的强度。 例如,假设你编写的代码执行以下步骤:

  1. 创建 Image 对象。
  2. 创建 ImageAttributes 对象。
  3. ColorChannelFlagsC 传递给 ImageAttributes 对象的 ImageAttributes::SetOutputChannel 方法。
  4. 将颜色配置文件的路径名称传递给 ImageAttributes 对象的 ImageAttributes::SetOutputChannelColorProfile 方法。
  5. ImageImageAttributes 对象的地址传递给 DrawImage 方法。
Windows GDI+ 将使用颜色配置文件来计算图像中每个像素的青色分量,呈现的图像中的每个像素将为灰色阴影,指示其青色通道的强度。

ImageAttributes 对象维护五个调整类别的颜色和灰度设置:默认、位图、画笔、笔和文本。 例如,可以为默认类别指定输出通道颜色配置文件,为位图类别指定其他输出通道颜色配置文件。

默认的颜色和灰度调整设置适用于没有自己调整设置的所有类别。 例如,如果从未为位图类别指定任何调整设置,则默认设置将应用于位图类别。

为特定类别指定颜色或灰度调整设置后,默认调整设置将不再应用于该类别。 例如,假设为默认类别指定调整设置的集合。 如果通过将 ColorAdjustTypeBitmap 传递给 ImageAttributes::SetOutputChannelColorProfile 方法来设置位图类别的输出通道颜色配置文件,则默认调整设置都不会应用于位图。

示例

以下示例创建 Image 对象并调用 DrawImage 方法来绘制图像。 然后,代码创建 ImageAttributes 对象并调用其 ImageAttributes::SetOutputChannelColorProfile 方法以指定位图类别的配置文件。 调用 ImageAttributes::SetOutputChannel 将位图类别) 的输出通道 (设置为青色。 代码再次调用 DrawImage ,传递 Image 对象的地址和 ImageAttributes 对象的地址。 计算每个像素的青色通道,呈现的图像将青色通道的强度显示为灰色阴影。 代码又调用 DrawImage 三次,以显示洋红色、黄色和黑色通道的强度。


VOID Example_SetOutputProfile(HDC hdc)
{
   Graphics graphics(hdc);

   Image image(L"Mosaic2.bmp");
   ImageAttributes imAtt;
   UINT width = image.GetWidth();
   UINT height = image.GetHeight();

   // Draw the image unaltered.
   graphics.DrawImage(&image, 10, 10, width, height);

   imAtt.SetOutputChannelColorProfile(
      L"TEKPH600.ICM", ColorAdjustTypeBitmap);

   // Draw the image, showing the intensity of the cyan channel.
   imAtt.SetOutputChannel(ColorChannelFlagsC, ColorAdjustTypeBitmap);
   graphics.DrawImage(
      &image,
      Rect(110, 10, width, height),  // dest rect
      0, 0, width, height,           // source rect
      UnitPixel,
      &imAtt);

   // Draw the image, showing the intensity of the magenta channel.
   imAtt.SetOutputChannel(ColorChannelFlagsM, ColorAdjustTypeBitmap);
   graphics.DrawImage(
      &image,
      Rect(210, 10, width, height),  // dest rect
      0, 0, width, height,           // source rect
      UnitPixel,
      &imAtt);

   // Draw the image, showing the intensity of the yellow channel.
   imAtt.SetOutputChannel(ColorChannelFlagsY, ColorAdjustTypeBitmap);
   graphics.DrawImage(
      &image,
      Rect(10, 110, width, height),  // dest rect
      0, 0, width, height,           // source rect
      UnitPixel,
      &imAtt);

   // Draw the image, showing the intensity of the black channel.
   imAtt.SetOutputChannel(ColorChannelFlagsK, ColorAdjustTypeBitmap);
   graphics.DrawImage(
      &image,
      Rect(110, 110, width, height),  // dest rect
      0, 0, width, height,            // source rect
      UnitPixel,
      &imAtt); 
}
				

上述代码以及 Mosaic2.bmp 和 Tekph600.icm 的文件生成了以下输出。

显示一个图像的四个版本的插图:先是彩色,然后是三种不同的灰度模式

要求

要求
最低受支持的客户端 Windows XP、Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 gdiplusimageattributes.h (包括 Gdiplus.h)
Library Gdiplus.lib
DLL Gdiplus.dll

另请参阅

ColorAdjustType

ColorChannelFlags

ImageAttributes

ImageAttributes::ClearOutputChannel

ImageAttributes::ClearOutputChannelColorProfile

ImageAttributes::SetOutputChannel