Comment : utiliser une table de remappage des couleurs
Le remapping est le processus de conversion des couleurs dans une image en fonction d’une table de remappage de couleurs. La table de remappage de couleurs est un tableau d’objets ColorMap . Chaque ColorMap objet du tableau a une OldColor propriété et une NewColor propriété.
Lorsque GDI+ dessine une image, chaque pixel de l’image est comparé au tableau d’anciennes couleurs. Si la couleur d’un pixel correspond à une ancienne couleur, sa couleur est remplacée par la nouvelle couleur correspondante. Les couleurs sont modifiées uniquement pour le rendu : les valeurs de couleur de l’image elle-même (stockées dans un Image ou Bitmap un objet) ne sont pas modifiées.
Pour dessiner une image remappée, initialisez un tableau d’objets ColorMap . Passez ce tableau à la SetRemapTable méthode d’un ImageAttributes objet, puis passez l’objet ImageAttributes à la DrawImage méthode d’un Graphics objet.
Exemple
L’exemple suivant crée un Image objet à partir du fichier RemapInput.bmp. Le code crée une table de remappage de couleurs qui se compose d’un seul ColorMap objet. La OldColor propriété de l’objet ColorRemap
est rouge et la NewColor propriété est bleue. L’image est dessinée une fois sans remapping et une fois avec remapping. Le processus de remapping modifie tous les pixels rouges en bleu.
L’illustration suivante montre l’image d’origine à gauche et l’image remappée à droite.
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);
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)
Compilation du code
L'exemple précédent est conçu pour une utilisation avec Windows Forms et nécessite PaintEventArgse
, qui est un paramètre du gestionnaire d'événements Paint.
Voir aussi
.NET Desktop feedback
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour