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);
}
}
下图显示了上述代码的输出。 请注意,原始调色板中的绿色已更改为蓝色。
要求
最低受支持的客户端 | Windows XP、Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | gdiplusimageattributes.h (包括 Gdiplus.h) |
Library | Gdiplus.lib |
DLL | Gdiplus.dll |