Compartir a través de


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

El método ImageAttributes::ClearColorKey borra la clave de color (intervalo de transparencia) de una categoría especificada.

Sintaxis

Status ClearColorKey(
  [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 borra la clave de color. El valor predeterminado es ColorAdjustTypeDefault.

Valor devuelto

Tipo: Estado

Si el método se ejecuta 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 una clave de color para la categoría predeterminada, una clave de color diferente para la categoría de mapa de bits y una clave de color diferente 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 un ajuste de ajuste de escala de grises o de color para una determinada categoría, la configuración de ajuste predeterminada ya no se aplica a esa categoría. Por ejemplo, supongamos que especifica una clave de color predeterminada que hace que cualquier color con un componente rojo de 200 a 255 sea transparente y especifique un valor gamma predeterminado de 1,8. Si establece la clave de color de la categoría de lápiz llamando a ImageAttributes::SetColorKey, la clave de color predeterminada y el valor gamma predeterminado no se aplicará a los lápices. Si más adelante borra la tecla de color del lápiz llamando a ImageAttributes::ClearColorKey, la categoría de lápiz no se revertirá a la clave de color predeterminada; en su lugar, la categoría de lápiz no tendrá ninguna clave de color. Del mismo modo, la categoría de lápiz no revertirá al valor gamma predeterminado; en su lugar, la categoría del 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::SetColorKey establece la clave de color predeterminada del objeto ImageAttributes para que los colores con un componente rojo de 80 a 120 sean transparentes. La segunda llamada a ImageAttributes::SetColorKey establece la clave de color del lápiz del objeto ImageAttributes para que todos los colores con un componente rojo de 135 a 175 sean transparentes.

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 la clave de color predeterminada), todo el rojo de 80 a 120 es transparente. La tercera vez que se dibuja la imagen (después de la llamada que establece la tecla de color del lápiz), todo el rojo de 135 a 175 que se dibuja con un lápiz es transparente. Además, todo el rojo de 80 a 120 que no se dibuja con un lápiz es transparente. La cuarta vez que se dibuja la imagen (después de la llamada a ImageAttributes::ClearColorKey), ninguno de los rojo dibujados con un lápiz es transparente. Además, todo el rojo de 80 a 120 que no se dibuja con un lápiz es 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); 
}
				

El código anterior, junto con un archivo determinado, TestMetafile5.png, generó la siguiente salida. Las barras de la columna izquierda se dibujaron con un lápiz y las barras de la columna derecha se rellenaron con un pincel. La clave de color predeterminada se aplica a las barras rellenadas con un pincel. La clave de color que se aplica a las barras dibujadas con un lápiz varía según las llamadas ImageAttributes::SetColorKey e ImageAttributes::ClearColorKey .

Ilustración en la que se muestran barras en cuatro filas de dos columnas cada una; los dos últimos tienen un número desigual de barras en cada fila

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 (include Gdiplus.h)
Library Gdiplus.lib
Archivo DLL Gdiplus.dll

Consulte también

Bitmap

Color

ColorAdjustType

Imagen

ImageAttributes

ImageAttributes::ClearThreshold

ImageAttributes::SetColorKey

ImageAttributes::SetThreshold

Metarchivo de

Cambio de color