Ü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.

Abbildung mit vier farbigen Balken und denselben Balken mit unterschiedlichen Farben

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)