ColorMatrix Klass

Definition

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.

Färger

Koden i följande exempel använder följande steg för att utföra omfärgningen:

  1. Initiera ett ColorMatrix objekt.

  2. Skapa ett ImageAttributes objekt och skicka objektet ColorMatrix till SetColorMatrix -metoden för ImageAttributes objektet.

  3. 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:

  1. Dubbla den röda komponenten

  2. 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.

Ändra färg på

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.

Ändra färg på

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 newColorMatrix.

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)

Gäller för

Se även