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