Share via


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.

illustrazione che mostra quattro barre colorate, quindi le stesse barre con colori diversi

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)