Partager via


Comment : traduire les couleurs d'une image

Une traduction ajoute une valeur à un ou plusieurs des quatre composants. Les entrées de la matrice de couleurs représentant les traductions sont présentées dans le tableau suivant.

Composant à traduire

Entrée de la matrice

Rouge

[4][0]

Vert

[4][1]

Bleu

[4][2]

Alpha

[4][3]

Exemple

L'exemple suivant crée un objet Image à partir du fichier ColorBars.bmp. Le code ajoute ensuite 0,75 au composant rouge de chaque pixel de l'image. L'image d'origine est dessinée le long de l'image transformée.

L'illustration suivante montre l'image d'origine sur la gauche et l'image transformée sur la droite.

Traduction des couleurs

Le tableau suivant répertorie les vecteurs de couleur correspondant aux quatre barres situées de part et d'autre de la traduction rouge. La valeur maximale d'un composant de couleur est 1, le composant rouge de la seconde ligne ne change pas. (De même, la valeur minimale d'un composant de couleur est 0.)

D'origine

Traduite

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)

        Dim image As New Bitmap("ColorBars.bmp")
        Dim imageAttributes As New ImageAttributes()
        Dim width As Integer = image.Width
        Dim height As Integer = image.Height

        Dim colorMatrixElements As Single()() = { _
           New Single() {1, 0, 0, 0, 0}, _
           New Single() {0, 1, 0, 0, 0}, _
           New Single() {0, 0, 1, 0, 0}, _
           New Single() {0, 0, 0, 1, 0}, _
           New Single() {0.75F, 0, 0, 0, 1}}

        Dim colorMatrix As New ColorMatrix(colorMatrixElements)

        imageAttributes.SetColorMatrix( _
           colorMatrix, _
           ColorMatrixFlag.Default, _
           ColorAdjustType.Bitmap)

        e.Graphics.DrawImage(image, 10, 10, width, height)

        ' Pass in the destination rectangle (2nd argument), the upper-left corner 
        ' (3rd and 4th arguments), width (5th argument),  and height (6th 
        ' argument) of the source rectangle.
        e.Graphics.DrawImage( _
           image, _
           New Rectangle(150, 10, width, height), _
           0, 0, _
           width, _
           height, _
           GraphicsUnit.Pixel, _
           imageAttributes)

Image image = new Bitmap("ColorBars.bmp");
ImageAttributes imageAttributes = new ImageAttributes();
int width = image.Width;
int height = image.Height;

float[][] colorMatrixElements = { 
   new float[] {1,  0,  0,  0, 0},
   new float[] {0,  1,  0,  0, 0},
   new float[] {0,  0,  1,  0, 0},
   new float[] {0,  0,  0,  1, 0},
   new float[] {.75f, 0, 0, 0, 1}};

ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements);

imageAttributes.SetColorMatrix(
   colorMatrix,
   ColorMatrixFlag.Default,
   ColorAdjustType.Bitmap);

e.Graphics.DrawImage(image, 10, 10, width, height);

e.Graphics.DrawImage(
   image,
   new Rectangle(150, 10, width, height),  // destination rectangle 
   0, 0,        // upper-left corner of source rectangle 
   width,       // width of source rectangle
   height,      // height of source rectangle
   GraphicsUnit.Pixel,
   imageAttributes);

Compilation du code

L'exemple précédent est destiné à une utilisation avec Windows Forms et nécessite PaintEventArgs e, qui est un paramètre du gestionnaire d'événements Paint. Remplacez ColorBars.bmp par le nom et le chemin d'accès d'un fichier image valides sur votre système.

Voir aussi

Référence

ColorMatrix

ImageAttributes

Autres ressources

Graphiques et dessins dans les Windows Forms

Recoloriage des images