ColorMatrix Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.
Der Code im folgenden Beispiel verwendet die folgenden Schritte zum Neufärben:
Initialisieren eines ColorMatrix-Objekts.
Erstellen Sie ein ImageAttributes-Objekt, und übergeben Sie das ColorMatrix-Objekt an die SetColorMatrix-Methode des ImageAttributes-Objekts.
Ü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:
Doppeltippen der roten Komponente
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.
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.
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 |
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) |