ImageAttributes::ClearBrushRemapTable 方法 (gdiplusimageattributes.h)

ImageAttributes::ClearBrushRemapTable 方法清除此 ImageAttributes 对象的画笔颜色重新映射表。

语法

Status ClearBrushRemapTable();

返回值

类型: 状态

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

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

注解

ImageAttributes 对象维护五个调整类别的颜色和灰度设置:默认、位图、画笔、笔和文本。 例如,可以为默认类别指定一个颜色重映射表,为位图类别指定不同的颜色重映射表,并为画笔类别指定不同的颜色重映射表。

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

为特定类别指定颜色或灰度调整设置后,默认调整设置将不再应用于该类别。 例如,假设指定将红色转换为绿色的默认重映射表,并指定默认伽玛值 1.8。 如果调用 ImageAttributes::SetBrushRemapTable,则默认重映射表 (红色到绿色) 且默认伽玛值 (1.8) 将不适用于画笔。 如果稍后调用 ImageAttributes::ClearBrushRemapTable,画笔类别不会还原默认重映射表;而画笔类别将没有重新映射表。 同样,画笔类别不会还原为默认伽玛值;而画笔类别将没有伽玛值。

示例

以下示例从 .emf 文件创建 Image 对象。 该代码还会创建 ImageAttributes 对象。 调用 ImageAttributes::SetRemapTable 会将 ImageAttributes 对象的默认颜色重新映射表设置为将红色转换为蓝色的表。 调用 ImageAttributes::SetBrushRemapTable 会将 ImageAttributes 对象的画笔重新映射表设置为将红色转换为绿色的表。

代码调用 DrawImage 一次,无需颜色调整就绘制图像。 然后,代码再调用 DrawImage 三次,每次传递 Image 对象的地址和 ImageAttributes 对象的地址。 调用 ImageAttributes::SetRemapTable) 后,第二次 (绘制图像时,所有红色都转换为蓝色。 调用 ImageAttributes::SetBrushRemapTable) 后,第三次 (绘制图像时,使用画笔绘制的所有红色都转换为绿色,其余红色将转换为蓝色。 调用 ImageAttributes::ClearBrushRemapTable) 后,第四次 (绘制图像时,所有用画笔绘制的红色保持不变,其余红色将转换为蓝色。


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

   Image image(L"TestMetafile4.emf");
   ImageAttributes imAtt;

   ColorMap defaultMap;
   defaultMap.oldColor = Color(255, 255, 0, 0);   // red converted to blue
   defaultMap.newColor = Color(255, 0, 0, 255);

   ColorMap brushMap;
   brushMap.oldColor = Color(255, 255, 0, 0);     // red converted to green
   brushMap.newColor = Color(255, 0, 255, 0);

   // Set the default color-remap table.
   imAtt.SetRemapTable(1, &defaultMap, ColorAdjustTypeDefault);

   // Draw the image (metafile) using no color adjustment.
   graphics.DrawImage(
      &image,
      Rect(10, 10, image.GetWidth(), image.GetHeight()),  // dest rect
      0, 0, image.GetWidth(), image.GetHeight(),          // source rect
      UnitPixel);

   // Draw the image (metafile) using default color adjustment.
   // All red is converted to blue.
   graphics.DrawImage(
      &image,
      Rect(10, 90, image.GetWidth(), image.GetHeight()),  // dest rect
      0, 0, image.GetWidth(), image.GetHeight(),          // source rect
      UnitPixel,
      &imAtt);

   // Set the brush remap table.
   imAtt.SetBrushRemapTable(1, &brushMap);

   // Draw the image (metafile) using default and brush adjustment.
   // Red painted with a brush is converted to green.
   // All other red is converted to blue (default).
   graphics.DrawImage(
      &image,
      Rect(10, 170, image.GetWidth(), image.GetHeight()),  // dest rect
      0, 0, image.GetWidth(), image.GetHeight(),           // source rect
      UnitPixel,
      &imAtt);

   // Clear the brush remap table.
   imAtt.ClearBrushRemapTable();

   // Draw the image (metafile) using only default color adjustment.
   // Red painted with a brush gets no color adjustment.
   // All other red is converted to blue (default).
   graphics.DrawImage(
      &image,
      Rect(10, 250, image.GetWidth(), image.GetHeight()),  // dest rect
      0, 0, image.GetWidth(), image.GetHeight(),           // source rect
      UnitPixel,
      &imAtt);  
}
				

前面的代码以及特定文件 Testmetafile4.emf 生成了以下输出。 左列中的省略号是用笔绘制的,右列中的省略号用画笔填充。 请注意,默认重映射表适用于使用笔绘制的省略号。 应用于用画笔填充的省略号的重映射表因 ImageAttributes::SetBrushRemapTableImageAttributes::ClearBrushRemapTable 调用而异。

显示四个空椭圆的插图;第一个为红色,其余为蓝色,然后是四个填充的椭圆:红色、蓝色、绿色和红色

要求

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

另请参阅

Bitmap

颜色

ColorAdjustType

ColorMap

图像

ImageAttributes

ImageAttributes::ClearRemapTable

ImageAttributes::SetBrushRemapTable

ImageAttributes::SetRemapTable

Metafile

重新着色