ImageAttributes::ClearColorKey 方法 (gdiplusimageattributes.h)
ImageAttributes::ClearColorKey 方法清除指定类别 (透明度范围) 的颜色键。
语法
Status ClearColorKey(
[in, optional] ColorAdjustType type
);
parameters
[in, optional] type
类型: ColorAdjustType
ColorAdjustType 枚举的元素,该元素指定清除颜色键的类别。 默认值为 ColorAdjustTypeDefault。
返回值
类型: 状态
如果该方法成功,则返回 Ok,这是 Status 枚举的元素。
如果方法失败,它将返回 Status 枚举的其他元素之一。
注解
ImageAttributes 对象维护五个调整类别的颜色和灰度设置:默认、位图、画笔、笔和文本。 例如,可以为默认类别指定一个颜色键,为位图类别指定不同的颜色键,并为笔类别指定不同的颜色键。
默认的颜色和灰度调整设置适用于没有自己调整设置的所有类别。 例如,如果从未为笔类别指定任何调整设置,则默认设置适用于笔类别。
为特定类别指定颜色或灰度调整设置后,默认调整设置将不再应用于该类别。 例如,假设你指定一个默认颜色键,该键使具有 200 到 255 的红色分量的任何颜色透明,并指定默认伽玛值 1.8。 如果通过调用 ImageAttributes::SetColorKey 设置笔类别的颜色键,则默认颜色键和默认伽玛值将不适用于笔。 如果以后通过调用 ImageAttributes::ClearColorKey 清除笔颜色键,则笔类别不会还原默认颜色键;而笔类别将没有颜色键。 同样,笔类别不会还原默认伽玛值;相反,笔类别将没有伽玛值。
示例
以下示例从 .emf 文件创建 Image 对象。 该代码还会创建 ImageAttributes 对象。 首次调用 ImageAttributes::SetColorKey 设置 ImageAttributes 对象的默认颜色键,以便红色分量从 80 到 120 的颜色是透明的。 第二次调用 ImageAttributes::SetColorKey 设置 ImageAttributes 对象的笔颜色键,以便具有红色分量(从 135 到 175)的所有颜色都是透明的。
代码调用 DrawImage 一次,无需颜色调整就绘制图像。 然后,代码再调用 DrawImage 三次,每次传递 Image 对象的地址和 ImageAttributes 对象的地址。 在设置默认颜色键) 调用后 (第二次绘制图像时,从 80 到 120 的所有红色都是透明的。 第三次在设置笔颜色键) 的调用后 (绘制图像时,使用笔绘制的 135 到 175 的所有红色都是透明的。 此外,所有未用笔绘制的 80 到 120 的红色都是透明的。 第四次在调用 ImageAttributes::ClearColorKey) 后 (绘制图像时,使用笔绘制的红色都不是透明的。 此外,所有未用笔绘制的 80 到 120 的红色都是透明的。
VOID Example_SetClearColorKey(HDC hdc)
{
Graphics graphics(hdc);
Image image(L"TestMetafile5.emf");
ImageAttributes imAtt;
// Draw the image (metafile) using no color adjustment.
graphics.DrawImage(
&image,
Rect(0, 0, image.GetWidth(), image.GetHeight()), // dest rect
0, 0, image.GetWidth(), image.GetHeight(), // source rect
UnitPixel);
// Set the default color key.
imAtt.SetColorKey(
Color(0, 80, 0, 0),
Color(255, 120, 255, 255),
ColorAdjustTypeDefault);
// Draw the image (metafile) using default color adjustment.
// Colors with red components from 80 through 120 are transparent.
graphics.DrawImage(
&image,
Rect(0, 100, image.GetWidth(), image.GetHeight()), // dest rect
0, 0, image.GetWidth(), image.GetHeight(), // source rect
UnitPixel,
&imAtt);
// Set the pen color key.
imAtt.SetColorKey(
Color(0, 135, 0, 0),
Color(255, 175, 255, 255),
ColorAdjustTypePen);
// Draw the image (metafile) using default and pen adjustment.
// Colors drawn with a pen that have red components from 135 through 175
// are transparent. Colors not drawn with a pen that have red components
// from 80 to 120 are transparent.
graphics.DrawImage(
&image,
Rect(0, 200, image.GetWidth(), image.GetHeight()), // dest rect
0, 0, image.GetWidth(), image.GetHeight(), // source rect
UnitPixel,
&imAtt);
// Clear the pen color key.
imAtt.ClearColorKey(ColorAdjustTypePen);
// Draw the image (metafile) using only default color adjustment.
// No colors drawn with a pen are transparent. Colors not drawn with
// a pen that have red components from 80 to 120 are transparent.
graphics.DrawImage(
&image,
Rect(0, 300, image.GetWidth(), image.GetHeight()), // dest rect
0, 0, image.GetWidth(), image.GetHeight(), // source rect
UnitPixel,
&imAtt);
}
前面的代码以及特定文件 TestMetafile5.png 生成了以下输出。 左列中的条形图是用笔绘制的,右列中的条形图用画笔填充。 默认颜色键适用于用画笔填充的条形图。 应用于使用笔绘制的条形图的颜色键因 ImageAttributes::SetColorKey 和 ImageAttributes::ClearColorKey 调用而异。
要求
最低受支持的客户端 | Windows XP、Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | gdiplusimageattributes.h (包括 Gdiplus.h) |
Library | Gdiplus.lib |
DLL | Gdiplus.dll |