Übersetzen von Farben
Eine Übersetzung fügt einer oder mehreren der vier Farbkomponenten einen Wert hinzu. Die Farbmatrixeinträge, die Übersetzungen darstellen, sind in der folgenden Tabelle angegeben.
| Zu übersetzende 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 roten Komponente jedes Pixels im Bild 0,75 hinzu. Das ursprüngliche Bild wird zusammen mit 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);
Die folgende Abbildung zeigt das ursprüngliche Bild auf der linken Seite und das transformierte Bild auf der rechten Seite.

In der folgenden Tabelle sind die Farbvektoren für die vier Balken vor und nach der roten Übersetzung aufgeführt. Beachten Sie, dass sich die rote Komponente in der zweiten Zeile nicht ändert, da der maximale Wert für eine Farbkomponente 1 ist. (Ebenso ist der Mindestwert für eine Farbkomponente 0.)
| Ursprünglich | Übersetzt |
|---|---|
| Schwarz (0, 0, 0, 1) | (0.75, 0, 0, 1) |
| Rot (1, 0, 0, 1) | (1, 0, 0, 1) |
| Grün (0, 1, 0, 1) | (0.75, 1, 0, 1) |
| Blau (0, 0, 1, 1) | (0.75, 0, 1, 1) |