Compartir a través de


Traducción de colores

Una conversión agrega un valor a uno o varios de los cuatro componentes de color. En la tabla siguiente se proporcionan las entradas de la matriz de colores que representan las conversiones.

Componente que se va a convertir Entrada de matriz
Rojo [4][0]
Verde [4][1]
Azul [4][2]
Alpha [4][3]

 

En el ejemplo siguiente se construye un objeto Image a partir del archivo ColorBars.bmp. Después, el código agrega 0,75 al componente rojo de cada píxel de la imagen. La imagen original se dibuja junto con la imagen transformada.

Image            image(L"ColorBars.bmp");
ImageAttributes  imageAttributes;
UINT             width = image.GetWidth();
UINT             height = image.GetHeight();

ColorMatrix colorMatrix = {
   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, 0.0f,
   0.75f, 0.0f, 0.0f, 0.0f, 1.0f};
   
imageAttributes.SetColorMatrix(
   &colorMatrix, 
   ColorMatrixFlagsDefault,
   ColorAdjustTypeBitmap);
   
graphics.DrawImage(&image, 10, 10, width, height);

graphics.DrawImage(
   &image, 
   Rect(150, 10, width, height),  // destination rectangle 
   0, 0,        // upper-left corner of source rectangle 
   width,       // width of source rectangle
   height,      // height of source rectangle
   UnitPixel,
   &imageAttributes);

En la ilustración siguiente se muestra la imagen original a la izquierda y la imagen transformada a la derecha.

ilustración en la que se muestran cuatro barras de color y, a continuación, las mismas barras con colores diferentes

En la tabla siguiente se enumeran los vectores de color de las cuatro barras antes y después de la conversión del color rojo. Tenga en cuenta que, dado que el valor máximo de un componente de color es 1, el componente rojo de la segunda fila no cambia. (Del mismo modo, el valor mínimo de un componente de color es 0).

Original Traducidos
Negro (0, 0, 0, 1) (0.75, 0, 0, 1)
Rojo (1, 0, 0, 1) (1, 0, 0, 1)
Verde (0, 1, 0, 1) (0.75, 1, 0, 1)
Azul (0, 0, 1, 1) (0.75, 0, 1, 1)