Traduzindo cores
Uma conversão adiciona um valor a um ou mais dos componentes de quatro cores. As entradas de matriz de cores que representam as conversões são fornecidas na tabela a seguir.
Componente a ser convertido | Entrada da matriz |
---|---|
Vermelho | [4][0] |
Verde | [4][1] |
Azul | [4][2] |
Alpha | [4][3] |
O exemplo a seguir constrói um objeto Image do arquivo ColorBars.bmp. Em seguida, o código adiciona 0,75 ao componente vermelho de cada pixel na imagem. A imagem original é desenhada ao lado da imagem 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);
A ilustração a seguir mostra a imagem original à esquerda e a imagem transformada à direita.
A tabela a seguir lista os vetores de cores para as quatro barras antes e depois da conversão em vermelho. Observe que, como o valor máximo para um componente de cor é 1, o componente vermelho na segunda linha não será alterado. (Da mesma forma, o valor mínimo para um componente de cor é 0).
Original | Traduzido |
---|---|
Preto (0, 0, 0, 1) | (0.75, 0, 0, 1) |
Vermelho (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) |