Compartir a través de


Método ImageAttributes::ClearColorMatrices (gdiplusimageattributes.h)

El método ImageAttributes::ClearColorMatrices borra la matriz de ajuste de color y la matriz de ajuste de escala de grises para una categoría especificada.

Sintaxis

Status ClearColorMatrices(
  [in, optional] ColorAdjustType type
);

Parámetros

[in, optional] type

Tipo: ColorAdjustType

Elemento de la enumeración ColorAdjustType que especifica la categoría para la que se borran las matrices de ajuste. El valor predeterminado es ColorAdjustTypeDefault.

Valor devuelto

Tipo: Estado

Si el método se realiza correctamente, devuelve Ok, que es un elemento de la enumeración Status .

Si se produce un error en el método, devuelve uno de los otros elementos de la enumeración Status .

Comentarios

Un objeto ImageAttributes mantiene la configuración de color y escala de grises para cinco categorías de ajuste: predeterminado, mapa de bits, pincel, lápiz y texto. Por ejemplo, puede especificar un par (color y escala de grises) de matrices de ajuste para la categoría predeterminada, un par diferente de matrices de ajuste para la categoría de mapa de bits y un par diferente de matrices de ajuste para la categoría de lápiz.

La configuración predeterminada de ajuste de escala de grises y color se aplica a todas las categorías que no tienen ajustes de ajuste propios. Por ejemplo, si nunca especifica ninguna configuración de ajuste para la categoría de lápiz, la configuración predeterminada se aplica a la categoría de lápiz.

En cuanto especifique una configuración de ajuste de escala de colores o grises para una determinada categoría, la configuración de ajuste predeterminada ya no se aplica a esa categoría. Por ejemplo, supongamos que especifica un par (color y escala de grises) de matrices de ajuste y un valor gamma para la categoría predeterminada. Si establece un par de matrices de ajuste para la categoría de lápiz llamando a ImageAttributes::SetColorMatrices, las matrices de ajuste predeterminadas no se aplicarán a los lápices. Si más adelante borra las matrices de ajuste del lápiz llamando a ImageAttributes::ClearColorMatrices, la categoría de lápiz no volverá a las matrices de ajuste predeterminadas; en su lugar, la categoría del lápiz no tendrá matrices de ajuste. Del mismo modo, la categoría del lápiz no revertirá al valor gamma predeterminado; en su lugar, la categoría de lápiz no tendrá ningún valor gamma.

Ejemplos

En el ejemplo siguiente se crea un objeto Image a partir de un archivo .emf. El código también crea un objeto ImageAttributes . La primera llamada a ImageAttributes::SetColorMatrices establece la matriz de ajuste de color predeterminada y la matriz de ajuste de escala de grises predeterminada del objeto ImageAttributes . La segunda llamada a ImageAttributes::SetColorMatrices establece la matriz de ajuste de color del lápiz y la matriz de ajuste de escala de grises del objeto ImageAttributes . Las cuatro matrices funcionan de la siguiente manera:

  • Color predeterminado: multiplica el componente rojo por 1,5.
  • Escala de grises predeterminada: multiplica el componente verde por 1,5.
  • Color del lápiz: multiplica el componente azul por 1,5.
  • Escala de grises de lápiz: multiplica los componentes rojo, verde y azul por 1,5.

El código llama a DrawImage una vez para dibujar la imagen sin ningún ajuste de color. A continuación, el código llama a DrawImage tres veces más, cada vez que pasa la dirección del objeto Image y la dirección del objeto ImageAttributes . La segunda vez que se dibuja la imagen (después de la llamada que establece las matrices predeterminadas), todos los colores tienen sus componentes rojos aumentados en un 50 por ciento, y todos los grises tienen sus componentes verdes aumentados en un 50 por ciento. La tercera vez que se dibuja la imagen (después de la llamada que establece las matrices de lápiz), todos los colores dibujados por un lápiz tienen sus componentes azules aumentados en un 50 por ciento, y todos los grises dibujados por un lápiz tienen sus componentes rojos, verdes y azules aumentados en un 50 por ciento. La cuarta vez que se dibuja la imagen (después de la llamada a ImageAttributes::ClearColorMatrices), no se aplican ajustes a colores y grises dibujados por un lápiz.


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); 
}
				

En la ilustración siguiente se muestra la salida del código anterior.

Ilustración que muestra cuatro filas de cuatro puntos suspensivos cada una; los dibujados con un lápiz varían en color más que los rellenos

Requisitos

   
Cliente mínimo compatible Windows XP, Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado gdiplusimageattributes.h (incluya Gdiplus.h)
Library Gdiplus.lib
Archivo DLL Gdiplus.dll

Consulte también

Bitmap

Color

ColorAdjustType

Colormatrix

Imagen

ImageAttributes

ImageAttributes::ClearColorMatrix

ImageAttributes::SetColorMatrices

ImageAttributes::SetColorMatrix

ImageAttributes::SetToIdentity

Metarchivo de

Cambio de color