Método ImageAttributes::ClearColorMatrices (gdiplusimageattributes.h)
O método ImageAttributes::ClearColorMatrices limpa a matriz de ajuste de cores e a matriz de ajuste de escala de cinza para uma categoria especificada.
Sintaxe
Status ClearColorMatrices(
[in, optional] ColorAdjustType type
);
Parâmetros
[in, optional] type
Tipo: ColorAdjustType
Elemento da enumeração ColorAdjustType que especifica a categoria para a qual as matrizes de ajuste são limpas. 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 um par (cor e escala de cinza) de matrizes de ajuste para a categoria padrão, um par diferente de matrizes de ajuste para a categoria de bitmap e ainda um par diferente de matrizes de ajuste 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 um par (cor e escala de cinza) de matrizes de ajuste e um valor gama para a categoria padrão. Se você definir um par de matrizes de ajuste para a categoria de caneta chamando ImageAttributes::SetColorMatrices, as matrizes de ajuste padrão não se aplicarão a canetas. Se você limpar posteriormente as matrizes de ajuste da caneta chamando ImageAttributes::ClearColorMatrices, a categoria de caneta não reverter às matrizes de ajuste padrão; em vez disso, a categoria de caneta não terá matrizes de ajuste. 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::SetColorMatrices define a matriz de ajuste de cor padrão e a matriz de ajuste de escala de cinza padrão do objeto ImageAttributes . A segunda chamada para ImageAttributes::SetColorMatrices define a matriz de ajuste de cor da caneta e a matriz de ajuste de escala de cinza da caneta do objeto ImageAttributes . As quatro matrizes são executadas da seguinte maneira:
- Cor padrão: multiplica o componente vermelho por 1,5.
- Escala de cinza padrão: multiplica o componente verde por 1,5.
- Cor da caneta: multiplica o componente azul por 1,5.
- Escala de cinza da caneta: multiplica os componentes vermelho, verde e azul por 1,5.
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 as matrizes padrão), todas as cores têm seus componentes vermelhos aumentados em 50% e todos os cinzas têm seus componentes verdes aumentados em 50%. Na terceira vez que a imagem é desenhada (após a chamada que define as matrizes de caneta), todas as cores desenhadas por uma caneta têm seus componentes azuis aumentados em 50%, e todos os cinzas desenhados por uma caneta têm seus componentes vermelhos, verdes e azuis aumentados em 50%. Na quarta vez que a imagem é desenhada (após a chamada para ImageAttributes::ClearColorMatrices), nenhum ajuste é aplicado às cores e cinzas desenhados por uma caneta.
VOID Example_SetClearColorMatrices(HDC hdc)
{
Graphics graphics(hdc);
Image image(L"TestMetafile6.emf");
ImageAttributes imAtt;
RectF rect;
Unit unit;
image.GetBounds(&rect, &unit);
ColorMatrix defaultColorMatrix = { // Multiply red component by 1.5.
1.5f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 0.0f, 1.0f};
ColorMatrix defaultGrayMatrix = { // Multiply green component by 1.5.
1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.5f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 0.0f, 1.0f};
ColorMatrix penColorMatrix = { // Multiply blue component by 1.5.
1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.5f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 0.0f, 1.0f};
ColorMatrix penGrayMatrix = { // Multiply all components by 1.5.
1.5f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.5f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.5f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 0.0f, 1.0f};
// Set the default color- and grayscale-adjustment matrices.
imAtt.SetColorMatrices(
&defaultColorMatrix,
&defaultGrayMatrix,
ColorMatrixFlagsAltGray,
ColorAdjustTypeDefault);
graphics.DrawImage(&image, 10.0f, 10.0f, rect.Width, rect.Height);
graphics.DrawImage(
&image,
RectF(10.0f, 50.0f, rect.Width, rect.Height), // destination rectangle
rect.X, rect.Y, // upper-left corner of source rectangle
rect.Width, // width of source rectangle
rect.Height, // height of source rectangle
UnitPixel,
&imAtt);
// Set the pen color- and grayscale-adjustment matrices.
imAtt.SetColorMatrices(
&penColorMatrix,
&penGrayMatrix,
ColorMatrixFlagsAltGray,
ColorAdjustTypePen);
graphics.DrawImage(
&image,
RectF(10.0f, 90.0f, rect.Width, rect.Height), // destination rectangle
rect.X, rect.Y, // upper-left corner of source rectangle
rect.Width, // width of source rectangle
rect.Height, // height of source rectangle
UnitPixel,
&imAtt);
imAtt.ClearColorMatrices(ColorAdjustTypePen);
graphics.DrawImage(
&image,
RectF(10.0f, 130.0f, rect.Width, rect.Height), // destination rectangle
rect.X, rect.Y, // upper-left corner of source rectangle
rect.Width, // width of source rectangle
rect.Height, // height of source rectangle
UnitPixel,
&imAtt);
}
A ilustração a seguir mostra a saída do código anterior.
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 |
Confira também
ImageAttributes::ClearColorMatrix
ImageAttributes::SetColorMatrices
ImageAttributes::SetColorMatrix