Compartilhar via


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.

Ilustração mostrando quatro linhas de quatro reticências cada; os desenhados com uma caneta variam em cores mais do que os preenchidos

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

Bitmap

Cor

Coloradjusttype

Colormatrix

Imagem

Imageattributes

ImageAttributes::ClearColorMatrix

ImageAttributes::SetColorMatrices

ImageAttributes::SetColorMatrix

ImageAttributes::SetToIdentity

Metarquivo

Recolorir