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-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.
Der Code im folgenden Beispiel verwendet die folgenden Schritte, um die Neueinfärbung auszuführen:
Initialisieren eines ColorMatrix-Objekts.
Erstellen eines ImageAttributes-Objekts und Übergeben des ColorMatrix-Objekts an die SetColorMatrix-Methode des ImageAttributes-Objekts.
Ü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:
Verdoppeln der Rot-Komponente
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.
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.
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 |
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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für