Utilisation d’une table de remappage des couleurs
Le remapping est le processus de conversion des couleurs d’une image en fonction d’une table de remappage de couleurs. La table de remappage de couleurs est un tableau de structures ColorMap . Chaque structure ColorMap dans le tableau a un membre oldColor et un nouveau membreColor .
Lorsque GDI+ dessine une image, chaque pixel de l’image est comparé au tableau des 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 objet Image ou Bitmap ) ne sont pas modifiées.
Pour dessiner une image remappée, initialisez un tableau de structures ColorMap . Transmettez l’adresse de ce tableau à la méthode ImageAttributes::SetRemapTable d’un objet ImageAttributes , puis transmettez l’adresse de l’objet ImageAttributes à la méthode DrawImage Methods d’un objet Graphics .
L’exemple suivant crée un objet Image à partir du fichier RemapInput.bmp. Le code crée une table de remappage de couleurs qui se compose d’une seule structure ColorMap . Le membre oldColor de la structure ColorMap est rouge et le nouveau membreColor est bleu. L’image est dessinée une fois sans remappage et une fois avec remapping. Le processus de remapping change tous les pixels rouges en bleu.
Image image(L"RemapInput.bmp");
ImageAttributes imageAttributes;
UINT width = image.GetWidth();
UINT height = image.GetHeight();
ColorMap colorMap[1];
colorMap[0].oldColor = Color(255, 255, 0, 0); // opaque red
colorMap[0].newColor = Color(255, 0, 0, 255); // opaque blue
imageAttributes.SetRemapTable(1, colorMap, 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 remappée à droite.