ColorMatrix Klas

Definitie

Definieert een matrix van 5 x 5 die de coördinaten voor de RGBAW-ruimte bevat. Verschillende methoden van de ImageAttributes klasse passen afbeeldingskleuren aan met behulp van een kleurenmatrix. Deze klasse kan niet worden overgenomen.

public ref class ColorMatrix sealed
public sealed class ColorMatrix
type ColorMatrix = class
Public NotInheritable Class ColorMatrix
Overname
ColorMatrix

Voorbeelden

In het volgende voorbeeld wordt een afbeelding met alle kleuren (0.2, 0.0, 0.4, 1.0) gebruikt en wordt de transformatie toegepast die in de voorgaande alinea's wordt beschreven.

In de volgende afbeelding ziet u de oorspronkelijke afbeelding aan de linkerkant en de getransformeerde afbeelding aan de rechterkant.

Kleuren

In de code in het volgende voorbeeld worden de volgende stappen gebruikt om de andere kleuren uit te voeren:

  1. Initialiseer een ColorMatrix object.

  2. Maak een ImageAttributes object en geef het ColorMatrix object door aan de SetColorMatrix methode van het ImageAttributes object.

  3. Geef het ImageAttributes object door aan de DrawImage methode van een Graphics object.

Het voorgaande voorbeeld is ontworpen voor gebruik met Windows Forms en vereist PaintEventArgse, een parameter van de Paint gebeurtenis-handler

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)

Opmerkingen

De matrixcoëfficiënten vormen een lineaire transformatie van 5 x 5 die wordt gebruikt voor het transformeren van HOMOGENE ARGB-waarden. Een ARGB-vector wordt bijvoorbeeld weergegeven als rood, groen, blauw, alfa en w, waarbij w altijd 1 is.

Stel dat u wilt beginnen met de kleur (0.2, 0.0, 0.4, 1.0) en de volgende transformaties toepassen:

  1. Het rode onderdeel verdubbelen

  2. Voeg 0,2 toe aan de rode, groene en blauwe componenten

Met de volgende matrixvermeniging wordt het paar transformaties in de vermelde volgorde uitgevoerd.

Andere kleuren wijzigen

De elementen van een kleurmatrix worden geïndexeerd (op nul gebaseerd) op rij en vervolgens kolom. De vermelding in de vijfde rij en de derde kolom van matrix M wordt bijvoorbeeld aangeduid door M[4][2].

De identiteitsmatrix 5×5 (weergegeven in de volgende afbeelding) heeft 1s op de diagonale en 0s overal anders. Als u een kleurvector vermenigvuldigt met de identiteitsmatrix, verandert de kleurvector niet. Een handige manier om de matrix van een kleurtransformatie te vormen, is door te beginnen met de identiteitsmatrix en een kleine wijziging aan te brengen die de gewenste transformatie produceert.

Andere kleuren wijzigen

Zie Coördinaatsystemen en transformaties voor een gedetailleerdere bespreking van matrices en transformaties.

Constructors

Name Description
ColorMatrix()

Initialiseert een nieuw exemplaar van de ColorMatrix klasse.

ColorMatrix(ReadOnlySpan<Single>)

Initialiseert een nieuw exemplaar van de ColorMatrix klasse met de elementen in de opgegeven matrix.

ColorMatrix(Single[][])

Initialiseert een nieuw exemplaar van de ColorMatrix klasse met behulp van de elementen in de opgegeven matrix newColorMatrix.

Eigenschappen

Name Description
Item[Int32, Int32]

Hiermee haalt of stelt u het element in de opgegeven rij en kolom in de ColorMatrix.

Matrix00

Hiermee haalt u het element op in de rij 0 (nul) en 0 kolom van dit ColorMatrixelement.

Matrix01

Hiermee haalt u het element op in de rij 0 (nul) en de eerste kolom van dit ColorMatrixelement.

Matrix02

Hiermee haalt u het element op in de rij 0 (nul) en de tweede kolom hiervan ColorMatrix.

Matrix03

Hiermee wordt het element op de rij 0 (nul) en de derde kolom van dit ColorMatrixelement ophaalt of ingesteld. Vertegenwoordigt het alfa-onderdeel.

Matrix04

Hiermee wordt het element op de rij 0 (nul) en de vierde kolom van dit ColorMatrixelement ophaalt of ingesteld.

Matrix10

Hiermee haalt u het element op in de eerste rij en 0 (nul) van dit ColorMatrixelement.

Matrix11

Hiermee haalt u het element op de eerste rij en de eerste kolom van deze op of stelt u het in ColorMatrix.

Matrix12

Hiermee haalt u het element op de eerste rij en tweede kolom van deze op of stelt u het in ColorMatrix.

Matrix13

Hiermee haalt u het element op de eerste rij en de derde kolom van deze op of stelt u het in ColorMatrix. Vertegenwoordigt het alfa-onderdeel.

Matrix14

Hiermee haalt u het element op de eerste rij en vierde kolom van dit element op of stelt u het in ColorMatrix.

Matrix20

Hiermee wordt het element op de tweede rij en 0 (nul) van dit ColorMatrixelement ophaalt of ingesteld.

Matrix21

Hiermee haalt u het element op de tweede rij en de eerste kolom van deze op of stelt u het in ColorMatrix.

Matrix22

Hiermee haalt u het element op de tweede rij en de tweede kolom van deze op of stelt u het in ColorMatrix.

Matrix23

Hiermee haalt u het element op de tweede rij en de derde kolom van dit element op of stelt u het in ColorMatrix.

Matrix24

Hiermee haalt u het element op de tweede rij en vierde kolom van deze op of stelt u het ColorMatrixin.

Matrix30

Hiermee wordt het element op de derde rij en 0 (nul) van dit ColorMatrixelement ophaalt of ingesteld.

Matrix31

Hiermee haalt u het element op de derde rij en de eerste kolom van dit element op of stelt u dit ColorMatrixin.

Matrix32

Hiermee haalt u het element op de derde rij en de tweede kolom van deze op of stelt u het in ColorMatrix.

Matrix33

Hiermee wordt het element op de derde rij en de derde kolom van dit ColorMatrixelement ophaalt of ingesteld. Vertegenwoordigt het alfa-onderdeel.

Matrix34

Hiermee wordt het element op de derde rij en vierde kolom van dit ColorMatrixelement ophaalt of ingesteld.

Matrix40

Hiermee haalt u het element op in de vierde rij en 0 (nul) van dit ColorMatrixelement.

Matrix41

Hiermee wordt het element op de vierde rij en de eerste kolom van dit ColorMatrixelement ophaalt of ingesteld.

Matrix42

Hiermee haalt u het element op in de vierde rij en tweede kolom van dit element of stelt u het in ColorMatrix.

Matrix43

Hiermee haalt u het element op in de vierde rij en derde kolom van dit element of stelt u het in ColorMatrix. Vertegenwoordigt het alfa-onderdeel.

Matrix44

Hiermee haalt u het element op in de vierde rij en vierde kolom van dit element of stelt u het in ColorMatrix.

Methoden

Name Description
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Van toepassing op

Zie ook