ImageAttributes::SetRemapTable 方法 (gdiplusimageattributes.h)

ImageAttributes::SetRemapTable 方法为指定类别设置颜色重新映射表。

语法

Status SetRemapTable(
  [in]           UINT            mapSize,
  [in]           const ColorMap  *map,
  [in, optional] ColorAdjustType type
);

parameters

[in] mapSize

类型: UINT

指定地图数组中元素数的 INT

[in] map

类型: const ColorMap*

指向用于定义 颜色映射的 ColorMap 结构的数组的指针。

[in, optional] type

类型: ColorAdjustType

ColorAdjustType 枚举的元素,该元素指定要为其设置颜色重新映射表的类别。 默认值为 ColorAdjustTypeDefault

返回值

类型: 状态

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

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

注解

颜色重新映射表是 ColorMap 结构的数组。 每个 ColorMap 结构都有两个 Color 对象:一个指定旧颜色,一个指定相应的新颜色。 在呈现期间,与重新映射表中的一种旧颜色匹配的任何颜色都更改为相应的新颜色。

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

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

为特定类别指定颜色或灰度调整设置后,默认调整设置将不再应用于该类别。 例如,假设为默认类别指定调整设置的集合。 如果通过将 ColorAdjustTypePen 传递到 ImageAttributes::SetRemapTable 方法来设置笔类别的颜色重新映射表,则任何默认调整设置都不会应用于笔。

示例

以下示例基于 .bmp 文件创建 Image 对象,然后绘制图像。 该代码创建 ImageAttributes 对象,并设置其默认重新映射表,以便将红色转换为蓝色。 然后,代码使用重新映射表指定的颜色调整再次绘制图像。


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

   // Create an Image object based on a .bmp file.
   // The image has one red stripe and one green stripe.
   Image image(L"RedGreenStripes.bmp");

   // Create an ImageAttributes object and set its remap table.
   ImageAttributes imageAtt;
   ColorMap cMap;
   cMap.oldColor = Color(255, 255, 0, 0);  // red 
   cMap.newColor = Color(255, 0, 0, 255);  // blue
   imageAtt.SetRemapTable(12, &cMap,
      ColorAdjustTypeDefault);

   // Draw the image with no color adjustment.
   graphics.DrawImage(&image, 10, 10, image.GetWidth(), image.GetHeight());
 
   // Draw the image with red converted to blue.
   graphics.DrawImage(&image,
      Rect(100, 10, image.GetWidth(), image.GetHeight()),  // dest rect
      0, 0, image.GetWidth(), image.GetHeight(),           // source rect
      UnitPixel,
      &imageAtt);
}
				

下图显示了上述代码的输出。

显示一个带有红色和绿色区域的矩形的插图,然后将红色区域替换为蓝色的同一个矩形

要求

   
最低受支持的客户端 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

Metafile

重新着色