Partager via


Comment : utiliser une table de remappage des couleurs

Le remappage est le processus de conversion des couleurs dans une image selon une table de remappage des couleurs. La table de remappage des couleurs est un tableau d'objets ColorMap. Chaque objet ColorMap du tableau possède une propriété OldColor et une propriété NewColor.

Lorsque GDI+ dessine une image, chaque pixel de cette image est comparé au tableau des anciennes couleurs. Si une couleur d'un pixel correspond à une ancienne couleur, celle-ci est modifiée dans la nouvelle couleur correspondante. Les couleurs sont modifiées uniquement à des fins de restitution : les valeurs de couleur de l'image elle-même (stockées dans un objet Image ou Bitmap) restent inchangées.

Pour dessiner une image remappée, initialisez un tableau d'objets ColorMap. Passez ce tableau à la méthode SetRemapTable d'un objet ImageAttributes, puis passez l'objet ImageAttributes à la méthode DrawImage d'un objet Graphics.

Exemple

L'exemple suivant crée un objet Image à partir du fichier RemapInput.bmp. Le code crée une table de remappage des couleurs qui se compose d'un objet ColorMap unique. La propriété OldColor de l'objet ColorRemap est rouge, et la propriété NewColor est bleue. L'image est dessinée une fois sans le remappage et une fois avec le remappage. Le processus de remappage modifie tous les pixels rouges en pixels bleus.

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

Remappage des couleurs

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

        colorMap.OldColor = Color.FromArgb(255, 255, 0, 0) ' opaque red
        colorMap.NewColor = Color.FromArgb(255, 0, 0, 255) ' opaque blue
        Dim remapTable As ColorMap() = {colorMap}

        imageAttributes.SetRemapTable(remapTable, 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("RemapInput.bmp");
ImageAttributes imageAttributes = new ImageAttributes();
int width = image.Width;
int height = image.Height;
ColorMap colorMap = new ColorMap();

colorMap.OldColor = Color.FromArgb(255, 255, 0, 0);  // opaque red
colorMap.NewColor = Color.FromArgb(255, 0, 0, 255);  // opaque blue

ColorMap[] remapTable = { colorMap };

imageAttributes.SetRemapTable(remapTable, 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.

Voir aussi

Autres ressources

Recoloriage des images

Images, bitmaps et métafichiers