ImageAttributes::GetAdjustedPalette 方法 (gdiplusimageattributes.h)

ImageAttributes::GetAdjustedPalette 方法根据指定类别的调整设置调整调色板中的颜色。

语法

Status GetAdjustedPalette(
  [in, out] ColorPalette    *colorPalette,
  [in]      ColorAdjustType colorAdjustType
);

parameters

[in, out] colorPalette

类型: ColorPalette*

指向 ColorPalette 结构的指针,该结构在输入时包含要调整的调色板,并在输出时接收调整后的调色板。

[in] colorAdjustType

类型: ColorPalette

ColorAdjustType 枚举的元素,该元素指定其调整设置将应用于调色板的类别。

返回值

类型: 状态

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

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

注解

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

调用 ImageAttributes::GetAdjustedPalette 时,可以指定用于调整调色板颜色的调整类别。 例如,如果将 ColorAdjustTypeBitmap 传递给 ImageAttributes::GetAdjustedPalette 方法,则位图类别的调整设置用于调整调色板颜色。

示例

以下示例使用四种颜色初始化 ColorPalette 结构:水、黑色、红色和绿色。 该代码还会创建 ImageAttributes 对象,并设置其位图重新映射表,以便绿色将转换为蓝色。 然后,代码通过将调色板的地址传递给 ImageAttributes 对象的 ImageAttributes::GetAdjustedPalette 方法来调整调色 颜色。 该代码显示四种调色板颜色两次:调整前一次,调整后一次。


VOID Example_GetAdjustedPalette(HDC hdc)
{
   Graphics graphics(hdc);
   INT j;

   // Create a palette that has four entries.
   ColorPalette* palette = 
      (ColorPalette*)malloc(sizeof(ColorPalette) + 3 * sizeof(ARGB));
   palette->Flags = 0;
   palette->Count = 4;

   palette->Entries[0] = 0xFF00FFFF;   // aqua
   palette->Entries[1] = 0xFF000000;   // black
   palette->Entries[2] = 0xFFFF0000;   // red
   palette->Entries[3] = 0xFF00FF00;   // green
  
   // Display the four palette colors with no adjustment.
   SolidBrush brush(Color());
   for(j = 0; j < 4; ++j)
   {
      brush.SetColor(palette->Entries[j]);
      graphics.FillRectangle(&brush, 30*j, 0, 20, 20);
   }

   // Create a remap table that converts green to blue.
   ColorMap map;
      map.oldColor = Color(255, 0, 255, 0);  // green
      map.newColor = Color(255, 0, 0, 255);  // blue

   // Create an ImageAttributes object, and set its bitmap remap table.
   ImageAttributes imAtt;
   imAtt.SetRemapTable(1, &map, ColorAdjustTypeBitmap);

   // Adjust the palette.
   imAtt.GetAdjustedPalette(palette, ColorAdjustTypeBitmap);

   // Display the four palette colors after the adjustment.
   for(j = 0; j < 4; ++j)
   {
      brush.SetColor(palette->Entries[j]);
      graphics.FillRectangle(&brush, 30*j, 30, 20, 20);
   }
}
				

下图显示了上述代码的输出。 请注意,原始调色板中的绿色已更改为蓝色。

带两行彩色矩形的插图;最后一行为绿色,第 2 行为蓝色

要求

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

另请参阅

Bitmap

颜色

ColorAdjustType

ColorMap

ColorPalette

图像

ImageAttributes

Metafile

PaletteFlags

重新着色