ColorMatrix Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Definierar en matris på 5 x 5 som innehåller koordinaterna för RGBAW-utrymmet. Flera metoder för klassen ImageAttributes justerar bildfärger med hjälp av en färgmatris. Det går inte att ärva den här klassen.
public ref class ColorMatrix sealed
public sealed class ColorMatrix
type ColorMatrix = class
Public NotInheritable Class ColorMatrix
- Arv
-
ColorMatrix
Exempel
I följande exempel tas en bild som är helt en färg (0.2, 0.0, 0.4, 1.0) och tillämpar transformeringen som beskrivs i föregående stycken.
Följande bild visar den ursprungliga bilden till vänster och den transformerade bilden till höger.
Koden i följande exempel använder följande steg för att utföra omfärgningen:
Initiera ett ColorMatrix objekt.
Skapa ett ImageAttributes objekt och skicka objektet ColorMatrix till SetColorMatrix -metoden för ImageAttributes objektet.
Skicka objektet ImageAttributes till -metoden för DrawImage ett Graphics objekt.
Föregående exempel är utformat för användning med Windows Forms och kräver PaintEventArgse, vilket är en parameter för händelsehanteraren Paint
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)
Kommentarer
Matriskoefficienterna utgör en linjär omvandling på 5 x 5 som används för att transformera ARGB-homogena värden. Till exempel representeras en ARGB-vektor som röd, grön, blå, alfa och w, där w alltid är 1.
Anta till exempel att du vill börja med färgen (0.2, 0.0, 0.4, 1.0) och tillämpa följande transformeringar:
Dubbla den röda komponenten
Lägg till 0.2 i de röda, gröna och blå komponenterna
Följande matris-multiplikation utför transformeringsparet i den ordning som anges.
Elementen i en färgmatris indexeras (nollbaserade) efter rad och sedan kolumn. Posten i den femte raden och den tredje kolumnen i matris M anges till exempel av M[4][2].
Identitetsmatrisen 5×5 (visas i följande bild) har 1:a på diagonalen och 0-talet överallt annars. Om du multiplicerar en färgvektor med identitetsmatrisen ändras inte färgvektorn. Ett praktiskt sätt att bilda matrisen för en färgtransformation är att börja med identitetsmatrisen och göra en liten ändring som ger önskad omvandling.
En mer detaljerad diskussion om matriser och transformeringar finns i Koordinatsystem och transformeringar.
Konstruktorer
| Name | Description |
|---|---|
| ColorMatrix() |
Initierar en ny instans av ColorMatrix klassen. |
| ColorMatrix(ReadOnlySpan<Single>) |
Initierar en ny instans av ColorMatrix klassen med elementen i den angivna matrisen. |
| ColorMatrix(Single[][]) |
Initierar en ny instans av ColorMatrix klassen med elementen i den angivna matrisen |
Egenskaper
| Name | Description |
|---|---|
| Item[Int32, Int32] |
Hämtar eller anger elementet på den angivna raden och kolumnen i ColorMatrix. |
| Matrix00 |
Hämtar eller anger elementet på raden 0 (noll) och 0 i den här ColorMatrix. |
| Matrix01 |
Hämtar eller anger elementet på raden 0 (noll) och den första kolumnen i den här ColorMatrix. |
| Matrix02 |
Hämtar eller anger elementet på raden 0 (noll) och den andra kolumnen i den här ColorMatrix. |
| Matrix03 |
Hämtar eller anger elementet på raden 0 (noll) och den tredje kolumnen i den här ColorMatrix. Representerar alfakomponenten. |
| Matrix04 |
Hämtar eller anger elementet på raden 0 (noll) och den fjärde kolumnen i den här ColorMatrix. |
| Matrix10 |
Hämtar eller anger elementet på den första raden och kolumnen 0 (noll) i den här ColorMatrix. |
| Matrix11 |
Hämtar eller anger elementet på den första raden och den första kolumnen i den här ColorMatrix. |
| Matrix12 |
Hämtar eller anger elementet på den första raden och den andra kolumnen i den här ColorMatrix. |
| Matrix13 |
Hämtar eller anger elementet på den första raden och den tredje kolumnen i den här ColorMatrix. Representerar alfakomponenten. |
| Matrix14 |
Hämtar eller anger elementet på den första raden och den fjärde kolumnen i den här ColorMatrix. |
| Matrix20 |
Hämtar eller anger elementet på den andra raden och kolumnen 0 (noll) i den här ColorMatrix. |
| Matrix21 |
Hämtar eller anger elementet på den andra raden och den första kolumnen i den här ColorMatrix. |
| Matrix22 |
Hämtar eller anger elementet på den andra raden och den andra kolumnen i den här ColorMatrix. |
| Matrix23 |
Hämtar eller anger elementet på den andra raden och den tredje kolumnen i den här ColorMatrix. |
| Matrix24 |
Hämtar eller anger elementet på den andra raden och den fjärde kolumnen i den här ColorMatrix. |
| Matrix30 |
Hämtar eller anger elementet på den tredje raden och kolumnen 0 (noll) i den här ColorMatrix. |
| Matrix31 |
Hämtar eller anger elementet på den tredje raden och den första kolumnen i den här ColorMatrix. |
| Matrix32 |
Hämtar eller anger elementet på den tredje raden och den andra kolumnen i den här ColorMatrix. |
| Matrix33 |
Hämtar eller anger elementet på den tredje raden och den tredje kolumnen i den här ColorMatrix. Representerar alfakomponenten. |
| Matrix34 |
Hämtar eller anger elementet på den tredje raden och den fjärde kolumnen i den här ColorMatrix. |
| Matrix40 |
Hämtar eller anger elementet på den fjärde raden och kolumnen 0 (noll) i den här ColorMatrix. |
| Matrix41 |
Hämtar eller anger elementet på den fjärde raden och den första kolumnen i den här ColorMatrix. |
| Matrix42 |
Hämtar eller anger elementet på den fjärde raden och den andra kolumnen i den här ColorMatrix. |
| Matrix43 |
Hämtar eller anger elementet på den fjärde raden och den tredje kolumnen i den här ColorMatrix. Representerar alfakomponenten. |
| Matrix44 |
Hämtar eller anger elementet på den fjärde raden och den fjärde kolumnen i den här ColorMatrix. |
Metoder
| Name | Description |
|---|---|
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |