ColorMatrix Klasse

Definition

Definiert eine 5 x 5-Matrix, die die Koordinaten für den RGBAW-Farbraum enthält. Einige Methoden der ImageAttributes-Klasse passen Bildfarben mithilfe einer Farbmatrix an. Diese Klasse kann nicht vererbt werden.

public ref class ColorMatrix sealed
public sealed class ColorMatrix
type ColorMatrix = class
Public NotInheritable Class ColorMatrix
Vererbung
ColorMatrix

Beispiele

Im folgenden Beispiel wird ein Bild verwendet, das vollständig einfarbig (0.2, 0.0, 0.4, 1.0) ist, und die in den vorherigen Absätzen beschriebene Transformation darauf angewendet.

In der folgenden Abbildung wird links das Originalbild und rechts das transformierte Bild gezeigt.

Farben

Der Code im folgenden Beispiel verwendet die folgenden Schritte, um die Neueinfärbung auszuführen:

  1. Initialisieren eines ColorMatrix-Objekts.

  2. Erstellen eines ImageAttributes-Objekts und Übergeben des ColorMatrix-Objekts an die SetColorMatrix-Methode des ImageAttributes-Objekts.

  3. Übergeben des ImageAttributes-Objekts an die DrawImage-Methode eines Graphics-Objekts.

Das obige Beispiel ist für die Verwendung mit Windows Forms konzipiert und erfordert PaintEventArgse, was ein Parameter des Paint Ereignishandlers ist.

Image image = new Bitmap("InputColor.bmp");
ImageAttributes imageAttributes = new ImageAttributes();
int width = image.Width;
int height = image.Height;

float[][] colorMatrixElements = { 
   new float[] {2,  0,  0,  0, 0},        // red scaling factor of 2
   new float[] {0,  1,  0,  0, 0},        // green scaling factor of 1
   new float[] {0,  0,  1,  0, 0},        // blue scaling factor of 1
   new float[] {0,  0,  0,  1, 0},        // alpha scaling factor of 1
   new float[] {.2f, .2f, .2f, 0, 1}};    // three translations of 0.2

ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements);

imageAttributes.SetColorMatrix(
   colorMatrix,
   ColorMatrixFlag.Default,
   ColorAdjustType.Bitmap);

e.Graphics.DrawImage(image, 10, 10);

e.Graphics.DrawImage(
   image,
   new Rectangle(120, 10, width, height),  // destination rectangle 
   0, 0,        // upper-left corner of source rectangle 
   width,       // width of source rectangle
   height,      // height of source rectangle
   GraphicsUnit.Pixel,
   imageAttributes);
Dim image As New Bitmap("InputColor.bmp")
Dim imageAttributes As New ImageAttributes()
Dim width As Integer = image.Width
Dim height As Integer = image.Height

' The following matrix consists of the following transformations:
' red scaling factor of 2
' green scaling factor of 1
' blue scaling factor of 1
' alpha scaling factor of 1
' three translations of 0.2
Dim colorMatrixElements As Single()() = { _
   New Single() {2, 0, 0, 0, 0}, _
   New Single() {0, 1, 0, 0, 0}, _
   New Single() {0, 0, 1, 0, 0}, _
   New Single() {0, 0, 0, 1, 0}, _
   New Single() {0.2F, 0.2F, 0.2F, 0, 1}}

Dim colorMatrix As New ColorMatrix(colorMatrixElements)

imageAttributes.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap)

e.Graphics.DrawImage(image, 10, 10)

e.Graphics.DrawImage( _
   image, _
   New Rectangle(120, 10, width, height), _
   0, _
   0, _
   width, _
   height, _
   GraphicsUnit.Pixel, _
   imageAttributes)

Hinweise

Die Matrixkoeffizienten stellen eine lineare Transformation von 5 x 5 dar, die zum Transformieren homogener ARGB-Werte verwendet wird. Ein ARGB-Vektor wird beispielsweise als rot, grün, blau, alpha und w dargestellt, wobei w immer 1 ist.

Angenommen, Sie möchten beispielsweise mit der Farbe (0.2, 0.0, 0.4, 1.0) beginnen und die folgenden Transformationen anwenden:

  1. Verdoppeln der Rot-Komponente

  2. Hinzufügen von 0,2 (0.2) zu den Komponenten Rot, Grün und Blau

Die folgende Matrixmultiplikation führt das Transformationspaar in der aufgeführten Reihenfolge aus.

Umfärben neu einfärben

Die Elemente einer Farbmatrix werden nach Zeile und Spalte indiziert (nullbasiert). Beispielsweise wird der Eintrag in der fünften Zeile und dritten Spalte der Matrix M durch „M[4][2]“ bezeichnet.

Die 5×5-Identitätsmatrix (in der folgenden Abbildung dargestellt) weist Einsen (1) auf der Diagonalen und Nullen (0) überall sonst auf. Wenn Sie einen Farbvektor mit der Identitätsmatrix multiplizieren, ändert sich der Farbvektor nicht. Eine bequeme Möglichkeit, um die Matrix einer Farbtransformation zu bilden, besteht darin, mit der Identitätsmatrix zu beginnen und eine kleine Änderung vorzunehmen, die die gewünschte Transformation erzeugt.

Umfärben neu einfärben

Ausführlichere Erläuterungen zu Matrizen und Transformationen finden Sie unter Koordinatensysteme und Transformationen.

Konstruktoren

ColorMatrix()

Initialisiert eine neue Instanz der ColorMatrix-Klasse.

ColorMatrix(ReadOnlySpan<Single>)

Definiert eine 5 x 5-Matrix, die die Koordinaten für den RGBAW-Farbraum enthält. Einige Methoden der ImageAttributes-Klasse passen Bildfarben mithilfe einer Farbmatrix an. Diese Klasse kann nicht vererbt werden.

ColorMatrix(Single[][])

Initialisiert eine neue Instanz der ColorMatrix-Klasse mit den Elementen der angegebenen Matrix newColorMatrix.

Eigenschaften

Item[Int32, Int32]

Ruft das Element in der angegebenen Zeile und Spalte in der ColorMatrix ab oder legt dieses fest.

Matrix00

Ruft das Element in Zeile 0 (null) und Spalte 0 dieser ColorMatrix ab oder legt dieses fest.

Matrix01

Ruft das Element in Zeile 0 (null) und Spalte 1 dieser ColorMatrix ab oder legt dieses fest.

Matrix02

Ruft das Element in Zeile 0 (null) und Spalte 2 dieser ColorMatrix ab oder legt dieses fest.

Matrix03

Ruft das Element in Zeile 0 (null) und Spalte 3 dieser ColorMatrix ab oder legt dieses fest. Stellt die Alphakomponente dar.

Matrix04

Ruft das Element in Zeile 0 (null) und Spalte 4 dieser ColorMatrix ab oder legt dieses fest.

Matrix10

Ruft das Element in Zeile 1 und Spalte 0 (null) dieser ColorMatrix ab oder legt dieses fest.

Matrix11

Ruft das Element in Zeile 1 und Spalte 1 dieser ColorMatrix ab oder legt dieses fest.

Matrix12

Ruft das Element in Zeile 1 und Spalte 2 dieser ColorMatrix ab oder legt dieses fest.

Matrix13

Ruft das Element in Zeile 1 und Spalte 3 dieser ColorMatrix ab oder legt dieses fest. Stellt die Alphakomponente dar.

Matrix14

Ruft das Element in Zeile 1 und Spalte 4 dieser ColorMatrix ab oder legt dieses fest.

Matrix20

Ruft das Element in Zeile 2 und Spalte 0 (null) dieser ColorMatrix ab oder legt dieses fest.

Matrix21

Ruft das Element in Zeile 2 und Spalte 1 dieser ColorMatrix ab oder legt dieses fest.

Matrix22

Ruft das Element in Zeile 2 und Spalte 2 dieser ColorMatrix ab oder legt dieses fest.

Matrix23

Ruft das Element in Zeile 2 und Spalte 3 dieser ColorMatrix ab oder legt dieses fest.

Matrix24

Ruft das Element in Zeile 2 und Spalte 4 dieser ColorMatrix ab oder legt dieses fest.

Matrix30

Ruft das Element in Zeile 3 und Spalte 0 (null) dieser ColorMatrix ab oder legt dieses fest.

Matrix31

Ruft das Element in Zeile 3 und Spalte 1 dieser ColorMatrix ab oder legt dieses fest.

Matrix32

Ruft das Element in Zeile 3 und Spalte 2 dieser ColorMatrix ab oder legt dieses fest.

Matrix33

Ruft das Element in Zeile 3 und Spalte 3 dieser ColorMatrix ab oder legt dieses fest. Stellt die Alphakomponente dar.

Matrix34

Ruft das Element in Zeile 3 und Spalte 4 dieser ColorMatrix ab oder legt dieses fest.

Matrix40

Ruft das Element in Zeile 4 und Spalte 0 (null) dieser ColorMatrix ab oder legt dieses fest.

Matrix41

Ruft das Element in Zeile 4 und Spalte 1 dieser ColorMatrix ab oder legt dieses fest.

Matrix42

Ruft das Element in Zeile 4 und Spalte 2 dieser ColorMatrix ab oder legt dieses fest.

Matrix43

Ruft das Element in Zeile 4 und Spalte 3 dieser ColorMatrix ab oder legt dieses fest. Stellt die Alphakomponente dar.

Matrix44

Ruft das Element in Zeile 4 und Spalte 4 dieser ColorMatrix ab oder legt dieses fest.

Methoden

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für:

Weitere Informationen