Traduzione di colori
Una traduzione aggiunge un valore a uno o più dei quattro componenti di colore. Le voci della matrice di colore che rappresentano le traduzioni vengono fornite nella tabella seguente.
Componente da tradurre | Voce matrice |
---|---|
Red | [4][0] |
Green | [4][1] |
Blu | [4][2] |
Alfa | [4][3] |
Nell'esempio seguente viene creato un oggetto Image dal file ColorBars.bmp. Il codice aggiunge quindi 0,75 al componente rosso di ogni pixel nell'immagine. L'immagine originale viene disegnata insieme all'immagine trasformata.
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);
La figura seguente mostra l'immagine originale a sinistra e l'immagine trasformata a destra.
Nella tabella seguente sono elencati i vettori di colore per le quattro barre prima e dopo la traduzione rossa. Si noti che poiché il valore massimo per un componente colore è 1, il componente rosso nella seconda riga non cambia. Analogamente, il valore minimo per un componente di colore è 0.
Originale | Convertito |
---|---|
Nero (0, 0, 0, 1) | (0.75, 0, 0, 1) |
Rosso (1, 0, 0, 1) | (1, 0, 0, 1) |
Verde (0, 1, 0, 1) | (0.75, 1, 0, 1) |
Blu (0, 0, 1, 1) | (0.75, 0, 1, 1) |