Übersetzen von Farben
Eine Translation fügt einer oder mehreren der vier Farbkomponenten einen Wert hinzu. Die Farbmatrixeinträge, die Translationen darstellen, finden Sie in der folgenden Tabelle.
Translation für Komponente | Matrixeintrag |
---|---|
Red | [4][0] |
Grün | [4][1] |
Blau | [4][2] |
Alpha | [4][3] |
Im folgenden Beispiel wird ein Image-Objekt aus der Datei ColorBars.bmp erstellt. Anschließend fügt der Code der Rot-Komponente jedes Pixels im Bild 0,75 hinzu. Das Originalbild wird neben dem transformierten Bild gezeichnet.
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 der folgenden Abbildung wird links das Originalbild und rechts das transformierte Bild gezeigt.
In der folgenden Tabelle sind die Farbvektoren für die vier Balken vor und nach der Translation aufgeführt. Beachten Sie, dass sich die Rot-Komponente in der zweiten Zeile nicht ändert, da der Höchstwert für eine Farbkomponente 1 beträgt. (Ähnlich ist der Mindestwert für eine Farbkomponente 0.)
Ursprünglich | Übersetzt |
---|---|
Black (0, 0, 0, 1) | (0.75, 0, 0, 1) |
Red (1, 0, 0, 1) | (1, 0, 0, 1) |
Green (0, 1, 0, 1) | (0.75, 1, 0, 1) |
Blue (0, 0, 1, 1) | (0.75, 0, 1, 1) |