Partager via


Traduction de couleurs

Une traduction ajoute une valeur à un ou plusieurs des quatre composants de couleur. Les entrées de matrice de couleurs qui représentent les traductions sont indiquées dans le tableau suivant.

Composant à traduire Entrée de matrice
Rouge [4][0]
Vert [4][1]
Bleu [4][2]
Alpha [4][3]

 

L’exemple suivant construit un objet Image à partir du fichier ColorBars.bmp. Ensuite, le code ajoute 0,75 au composant rouge de chaque pixel de l’image. L’image d’origine est dessinée à côté de l’image transformée.

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

L’illustration suivante montre l’image d’origine à gauche et l’image transformée à droite.

illustration montrant quatre barres colorées, puis les mêmes barres avec des couleurs différentes

Le tableau suivant répertorie les vecteurs de couleur pour les quatre barres avant et après la traduction rouge. Notez que étant donné que la valeur maximale d’un composant de couleur est 1, le composant rouge de la deuxième ligne ne change pas. (De même, la valeur minimale d’un composant de couleur est 0.)

Original Traduit
Noir (0, 0, 0, 1) (0.75, 0, 0, 1)
Rouge (1, 0, 0, 1) (1, 0, 0, 1)
Vert (0, 1, 0, 1) (0.75, 1, 0, 1)
Bleu (0, 0, 1, 1) (0.75, 0, 1, 1)