Freigeben über


ColorMatrix Klasse

Definition

Definiert eine 5 x 5-Matrix, die die Koordinaten für den RGBAW-Raum enthält. Verschiedene Methoden der ImageAttributes Klasse passen Bildfarben mithilfe einer Farbmatrix an. Diese Klasse kann nicht geerbt 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 alle eine Farbe (0,2, 0,0, 0,4, 1.0) aufweist und die in den vorherigen Absätzen beschriebene Transformation anwendet.

Die folgende Abbildung zeigt das ursprüngliche Bild auf der linken Seite und das transformierte Bild auf der rechten Seite.

Farben

Der Code im folgenden Beispiel verwendet die folgenden Schritte zum Neufärben:

  1. Initialisieren eines ColorMatrix-Objekts.

  2. Erstellen Sie ein ImageAttributes-Objekt, und übergeben Sie das ColorMatrix-Objekt an die SetColorMatrix-Methode des ImageAttributes-Objekts.

  3. Übergeben Sie das ImageAttributes-Objekt an die DrawImage-Methode eines Graphics-Objekts.

Das vorangehende Beispiel wurde für die Verwendung mit Windows Forms entwickelt und erfordert PaintEventArgse, bei dem es sich um einen Parameter des Paint-Ereignishandlers handelt.

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. Beispielsweise wird ein ARGB-Vektor als rot, grün, blau, alpha und w dargestellt, wobei w immer 1 ist.

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

  1. Doppeltippen der roten Komponente

  2. Hinzufügen von 0,2 zu den roten, grünen und blauen Komponenten

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

Neu einfärben

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

Die 5×5-Identitätsmatrix (in der folgenden Abbildung dargestellt) hat 1 auf der Diagonale und 0s überall sonst. Wenn Sie einen Farbvektor mit der Identitätsmatrix multiplizieren, ändert sich der Farbvektor nicht. Eine bequeme Möglichkeit, 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.

Neu einfärben

Eine ausführlichere Erläuterung von 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-Raum enthält. Verschiedene Methoden der ImageAttributes Klasse passen Bildfarben mithilfe einer Farbmatrix an. Diese Klasse kann nicht geerbt werden.

ColorMatrix(Single[][])

Initialisiert eine neue Instanz der ColorMatrix Klasse mithilfe der Elemente in der angegebenen Matrix newColorMatrix.

Eigenschaften

Item[Int32, Int32]

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

Matrix00

Ruft ab oder legt das Element an der Zeile 0 (Null) und 0 Spalte dieses ColorMatrix.

Matrix01

Dient zum Abrufen oder Festlegen des Elements an der Zeile 0 (Null) und der ersten Spalte dieses ColorMatrix.

Matrix02

Dient zum Abrufen oder Festlegen des Elements an der Zeile 0 (Null) und der zweiten Spalte dieses ColorMatrix.

Matrix03

Dient zum Abrufen oder Festlegen des Elements an der Zeile 0 (Null) und der dritten Spalte dieses ColorMatrix. Stellt die Alphakomponente dar.

Matrix04

Dient zum Abrufen oder Festlegen des Elements an der Zeile 0 (Null) und der vierten Spalte dieses ColorMatrix.

Matrix10

Ruft ab oder legt das Element an der ersten Zeile und 0 (Null) Spalte dieses ColorMatrix.

Matrix11

Dient zum Abrufen oder Festlegen des Elements in der ersten Zeile und ersten Spalte dieses ColorMatrix.

Matrix12

Dient zum Abrufen oder Festlegen des Elements in der ersten Zeile und zweiten Spalte dieses ColorMatrix.

Matrix13

Dient zum Abrufen oder Festlegen des Elements in der ersten Zeile und dritten Spalte dieses ColorMatrix. Stellt die Alphakomponente dar.

Matrix14

Dient zum Abrufen oder Festlegen des Elements in der ersten Zeile und vierten Spalte dieses ColorMatrix.

Matrix20

Ruft ab oder legt das Element an der zweiten Zeile und 0 (Null) Spalte dieses ColorMatrix.

Matrix21

Dient zum Abrufen oder Festlegen des Elements in der zweiten Zeile und ersten Spalte dieses ColorMatrix.

Matrix22

Dient zum Abrufen oder Festlegen des Elements in der zweiten Zeile und zweiten Spalte dieses ColorMatrix.

Matrix23

Dient zum Abrufen oder Festlegen des Elements in der zweiten Zeile und dritten Spalte dieses ColorMatrix.

Matrix24

Dient zum Abrufen oder Festlegen des Elements in der zweiten Zeile und vierten Spalte dieses ColorMatrix.

Matrix30

Dient zum Abrufen oder Festlegen des Elements in der dritten Zeile und der Spalte 0 (Null) dieses ColorMatrix.

Matrix31

Dient zum Abrufen oder Festlegen des Elements in der dritten Zeile und ersten Spalte dieses ColorMatrix.

Matrix32

Dient zum Abrufen oder Festlegen des Elements in der dritten Zeile und zweiten Spalte dieses ColorMatrix.

Matrix33

Dient zum Abrufen oder Festlegen des Elements in der dritten Zeile und dritten Spalte dieses ColorMatrix. Stellt die Alphakomponente dar.

Matrix34

Dient zum Abrufen oder Festlegen des Elements in der dritten Zeile und vierten Spalte dieses ColorMatrix.

Matrix40

Ruft ab oder legt das Element an der vierten Zeile und 0 (Null) Spalte dieses ColorMatrix.

Matrix41

Dient zum Abrufen oder Festlegen des Elements in der vierten Zeile und ersten Spalte dieses ColorMatrix.

Matrix42

Dient zum Abrufen oder Festlegen des Elements in der vierten Zeile und zweiten Spalte dieses ColorMatrix.

Matrix43

Dient zum Abrufen oder Festlegen des Elements in der vierten Zeile und dritten Spalte dieses ColorMatrix. Stellt die Alphakomponente dar.

Matrix44

Dient zum Abrufen oder Festlegen des Elements in der vierten Zeile und vierten Spalte dieses ColorMatrix.

Methoden

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

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

(Geerbt von Object)

Gilt für:

Weitere Informationen