Een kleuroverzichtstabel gebruiken
Herkleuren is het proces voor het converteren van de kleuren in een afbeelding op basis van een kleurvertaaltabel. De color remap-tabel is een reeks van ColorMap structuren. Elke ColorMap structuur in de array heeft een oldColor element en een newColor element.
Wanneer GDI+ een afbeelding tekent, wordt elke pixel van de afbeelding vergeleken met de matrix met oude kleuren. Als de kleur van een pixel overeenkomt met een oude kleur, wordt de kleur gewijzigd in de bijbehorende nieuwe kleur. De kleuren worden alleen gewijzigd voor weergave. De kleurwaarden van de afbeelding zelf (opgeslagen in een Afbeelding of Bitmap-object) worden niet gewijzigd.
Als u een opnieuw toegewezen afbeelding wilt tekenen, initialiseert u een matrix van ColorMap structuren. Geef het adres van die matrix door aan de ImageAttributes::SetRemapTable methode van een ImageAttributes-object en geef het adres van het ImageAttributes-object door aan de DrawImage Methods methode van een Graphics-object.
In het volgende voorbeeld wordt een Image-object gemaakt op basis van het bestand RemapInput.bmp. De code maakt een kleurenhermappingstabel die bestaat uit één ColorMap structuur. De oldColor lid van de ColorMap structuur is rood en het newColor lid is blauw. De afbeelding wordt eenmaal weergegeven zonder hermapping en eenmaal met hermapping. Tijdens het opnieuw toewijzen worden alle rode pixels in blauw gewijzigd.
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);
In de volgende afbeelding ziet u de oorspronkelijke afbeelding aan de linkerkant en de herverdeelde afbeelding aan de rechterkant.