Kleuren vertalen
Een vertaling voegt een waarde toe aan een of meer van de vier kleuronderdelen. De kleurmatrixvermeldingen die vertalingen vertegenwoordigen, worden gegeven in de volgende tabel.
Te vertalen onderdeel | Matrixinvoer |
---|---|
Rood | [4][0] |
Groen | [4][1] |
Blauw | [4][2] |
Alfa | [4][3] |
In het volgende voorbeeld wordt een Image-object samengesteld uit het bestand ColorBars.bmp. Vervolgens voegt de code 0,75 toe aan het rode onderdeel van elke pixel in de afbeelding. De oorspronkelijke afbeelding wordt getekend naast de getransformeerde afbeelding.
Image image(L"ColorBars.bmp");
ImageAttributes imageAttributes;
UINT width = image.GetWidth();
UINT height = image.GetHeight();
ColorMatrix colorMatrix = {
1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f, 0.0f,
0.75f, 0.0f, 0.0f, 0.0f, 1.0f};
imageAttributes.SetColorMatrix(
&colorMatrix,
ColorMatrixFlagsDefault,
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 getransformeerde afbeelding aan de rechterkant.
De volgende tabel bevat de kleurvectoren voor de vier balken vóór en na de rode vertaling. Houd er rekening mee dat omdat de maximumwaarde voor een kleuronderdeel 1 is, het rode onderdeel in de tweede rij niet verandert. (Op dezelfde manier is de minimumwaarde voor een kleuronderdeel 0.)
Oorspronkelijk | Vertaald |
---|---|
Zwart (0, 0, 0, 1) | (0.75, 0, 0, 1) |
Rood (1, 0, 0, 1) | (1, 0, 0, 1) |
Groen (0, 1, 0, 1) | (0.75, 1, 0, 1) |
Blauw (0, 0, 1, 1) | (0.75, 0, 1, 1) |