Delen via


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.

afbeelding met twee versies van een afbeelding met meerdere kleuren; de rode regio in de eerste versie is blauw in de tweede versie