ImageAttributes::SetOutputChannel 方法 (gdiplusimageattributes.h)
ImageAttributes::SetOutputChannel 方法为指定类别设置 CMYK 输出通道。
语法
Status SetOutputChannel(
[in] ColorChannelFlags channelFlags,
[in, optional] ColorAdjustType type
);
parameters
[in] channelFlags
指定输出通道的 ColorChannelFlags 枚举的元素。
[in, optional] type
类型: ColorAdjustType
ColorAdjustType 枚举的元素,指定为其设置输出通道的类别。 默认值为 ColorAdjustTypeDefault。
返回值
类型: 状态
如果方法成功,则返回 Ok,这是 Status 枚举的元素。
如果 方法失败,它将返回 Status 枚举的其他元素之一。
注解
可以使用 ImageAttributes::SetOutputChannel 方法将图像转换为青色-洋红色-黄色-黑色 (CMYK) 颜色空间,并检查其中一个 CMYK 颜色通道的强度。 例如,假设创建 ImageAttributes 对象并将其位图输出通道设置为 ColorChannelFlagsC。 如果将 ImageAttributes 对象的地址传递给 DrawImage 方法,则会计算每个像素的青色分量,呈现的图像中的每个像素都是灰色阴影,指示其青色通道的强度。 同样,可以呈现指示洋红色、黄色和黑色通道强度的图像。
ImageAttributes 对象维护五个调整类别的颜色和灰度设置:默认、位图、画笔、笔和文本。 例如,可以为默认类别指定输出通道,为位图类别指定其他输出通道。
默认颜色和灰度调整设置适用于没有自己调整设置的所有类别。 例如,如果从未为位图类别指定任何调整设置,则默认设置将应用于位图类别。
为特定类别指定颜色或灰度调整设置后,默认调整设置将不再应用于该类别。 例如,假设为默认类别指定调整设置的集合。 如果通过将 ColorAdjustTypeBitmap 传递到 ImageAttributes::SetOutputChannel 方法来设置位图类别的输出通道,则任何默认调整设置都不会应用于位图。
示例
以下示例创建 Image 对象并调用 DrawImage 方法来绘制图像。 然后,代码创建 ImageAttributes 对象,并将其位图输出通道设置为 cyan (ColorChannelFlagsC) 。 代码再次调用 DrawImage ,传递 Image 对象的地址和 ImageAttributes 对象的地址。 计算每个像素的青色通道,呈现的图像将青色通道的强度显示为灰色阴影。 代码再调用 DrawImage 三次,以显示洋红色、黄色和黑色通道的强度。
VOID Example_SetOutputChannel(HDC hdc)
{
Graphics graphics(hdc);
Image image(L"Mosaic2.bmp");
// Draw the image unaltered.
graphics.DrawImage(&image, 10, 10, width, height);
UINT width = image.GetWidth();
UINT height = image.GetHeight();
ImageAttributes imAtt;
// 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);
}
下图显示了上述代码的输出。
![显示一个图像的五个版本:先是彩色,然后是四种不同灰度模式的插图](images/imageattributessetoutputchannel.png)
要求
最低受支持的客户端 | Windows XP、Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | gdiplusimageattributes.h (包括 Gdiplus.h) |
Library | Gdiplus.lib |
DLL | Gdiplus.dll |
另请参阅
ImageAttributes::ClearOutputChannel