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.
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) |