Método ImageAttributes::ClearColorKey (gdiplusimageattributes.h)
O método ImageAttributes::ClearColorKey limpa a chave de cor (intervalo de transparência) para uma categoria especificada.
Sintaxe
Status ClearColorKey(
[in, optional] ColorAdjustType type
);
Parâmetros
[in, optional] type
Tipo: ColorAdjustType
Elemento da enumeração ColorAdjustType que especifica a categoria para a qual a chave de cor é desmarcada. O valor padrão é ColorAdjustTypeDefault.
Valor retornado
Tipo: Status
Se o método for bem-sucedido, ele retornará Ok, que é um elemento da enumeração Status .
Se o método falhar, ele retornará um dos outros elementos da enumeração Status .
Comentários
Um objeto ImageAttributes mantém as configurações de cor e escala de cinza para cinco categorias de ajuste: padrão, bitmap, pincel, caneta e texto. Por exemplo, você pode especificar uma chave de cor para a categoria padrão, uma chave de cor diferente para a categoria bitmap e ainda uma chave de cor diferente para a categoria de caneta.
As configurações padrão de ajuste de cor e escala de cinza se aplicam a todas as categorias que não têm configurações de ajuste próprias. Por exemplo, se você nunca especificar nenhuma configuração de ajuste para a categoria de caneta, as configurações padrão se aplicarão à categoria de caneta.
Assim que você especificar uma configuração de ajuste de escala de cinza ou cor para uma determinada categoria, as configurações de ajuste padrão não se aplicam mais a essa categoria. Por exemplo, suponha que você especifique uma chave de cor padrão que torne qualquer cor com um componente vermelho de 200 a 255 transparente e especifique um valor gama padrão de 1,8. Se você definir a chave de cor da categoria de caneta chamando ImageAttributes::SetColorKey, a chave de cor padrão e o valor gama padrão não serão aplicados a canetas. Se você limpar posteriormente a chave de cor da caneta chamando ImageAttributes::ClearColorKey, a categoria da caneta não reverter à chave de cor padrão; em vez disso, a categoria de caneta não terá nenhuma chave de cor. Da mesma forma, a categoria de caneta não reverter ao valor gama padrão; em vez disso, a categoria de caneta não terá nenhum valor gama.
Exemplos
O exemplo a seguir cria um objeto Image de um arquivo .emf. O código também cria um objeto ImageAttributes . A primeira chamada para ImageAttributes::SetColorKey define a chave de cor padrão do objeto ImageAttributes para que as cores com um componente vermelho de 80 a 120 sejam transparentes. A segunda chamada para ImageAttributes::SetColorKey define a chave de cor da caneta do objeto ImageAttributes para que todas as cores com um componente vermelho de 135 a 175 sejam transparentes.
O código chama DrawImage uma vez para desenhar a imagem sem nenhum ajuste de cor. Em seguida, o código chama DrawImage mais três vezes, cada vez passando o endereço do objeto Image e o endereço do objeto ImageAttributes . Na segunda vez que a imagem é desenhada (após a chamada que define a chave de cor padrão), todo o vermelho de 80 a 120 é transparente. Na terceira vez que a imagem é desenhada (após a chamada que define a tecla de cor da caneta), todo o vermelho de 135 a 175 desenhado com uma caneta é transparente. Além disso, todo o vermelho de 80 a 120 que não é desenhado com uma caneta é transparente. Na quarta vez que a imagem é desenhada (após a chamada para ImageAttributes::ClearColorKey), nenhum dos vermelhos desenhados com uma caneta é transparente. Além disso, todo o vermelho de 80 a 120 que não é desenhado com uma caneta é transparente.
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);
}
O código anterior, juntamente com um arquivo específico, TestMetafile5.png, produziu a saída a seguir. As barras na coluna esquerda foram desenhadas com uma caneta e as barras na coluna direita foram preenchidas com um pincel. A chave de cor padrão se aplica às barras preenchidas com um pincel. A chave de cor que se aplica às barras desenhadas com uma caneta varia de acordo com as chamadas ImageAttributes::SetColorKey e ImageAttributes::ClearColorKey .
Requisitos
Cliente mínimo com suporte | Windows XP, Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | gdiplusimageattributes.h (inclua Gdiplus.h) |
Biblioteca | Gdiplus.lib |
DLL | Gdiplus.dll |