Condividi tramite


ColorMatrix Classe

Definizione

Definisce una matrice 5 x 5 che contiene le coordinate per lo spazio RGBAW. Diversi metodi della classe ImageAttributes regolano i colori delle immagini usando una matrice di colori. Questa classe non può essere ereditata.

public ref class ColorMatrix sealed
public sealed class ColorMatrix
type ColorMatrix = class
Public NotInheritable Class ColorMatrix
Ereditarietà
ColorMatrix

Esempio

Nell'esempio seguente viene accettata un'immagine che è tutto un colore (0.2, 0.0, 0.4, 1.0) e applica la trasformazione descritta nei paragrafi precedenti.

La figura seguente mostra l'immagine originale a sinistra e l'immagine trasformata a destra.

coloricolori

Il codice nell'esempio seguente usa i passaggi seguenti per eseguire la ricolorazione:

  1. Inizializzare un oggetto ColorMatrix.

  2. Creare un oggetto ImageAttributes e passare l'oggetto ColorMatrix al metodo SetColorMatrix dell'oggetto ImageAttributes.

  3. Passare l'oggetto ImageAttributes al metodo DrawImage di un oggetto Graphics.

L'esempio precedente è progettato per l'uso con Windows Form e richiede PaintEventArgse, che è un parametro del gestore eventi 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)

Commenti

I coefficienti di matrice costituiscono una trasformazione lineare di 5 x 5 utilizzata per trasformare valori omogenei ARGB. Ad esempio, un vettore ARGB è rappresentato come rosso, verde, blu, alfa e w, dove w è sempre 1.

Si supponga, ad esempio, di voler iniziare con il colore (0.2, 0.0, 0.4, 1.0) e applicare le trasformazioni seguenti:

  1. Raddoppiare il componente rosso

  2. Aggiungere 0.2 ai componenti rosso, verde e blu

La moltiplicazione della matrice seguente eseguirà la coppia di trasformazioni nell'ordine elencato.

Ricolorazione

Gli elementi di una matrice di colori vengono indicizzati (in base zero) per riga e quindi colonna. Ad esempio, la voce nella quinta riga e nella terza colonna della matrice M è indicata da M[4][2].

La matrice di identità 5×5 (illustrata nella figura seguente) ha 1s sulla diagonale e 0 ovunque. Se si moltiplica un vettore di colore per la matrice di identità, il vettore di colore non cambia. Un modo pratico per formare la matrice di una trasformazione del colore consiste nell'iniziare con la matrice di identità e apportare una piccola modifica che produce la trasformazione desiderata.

Ricolorazione

Per una descrizione più dettagliata delle matrici e delle trasformazioni, vedere Sistemi di coordinate e trasformazioni.

Costruttori

ColorMatrix()

Inizializza una nuova istanza della classe ColorMatrix.

ColorMatrix(ReadOnlySpan<Single>)

Definisce una matrice 5 x 5 che contiene le coordinate per lo spazio RGBAW. Diversi metodi della classe ImageAttributes regolano i colori delle immagini usando una matrice di colori. Questa classe non può essere ereditata.

ColorMatrix(Single[][])

Inizializza una nuova istanza della classe ColorMatrix utilizzando gli elementi nella matrice specificata newColorMatrix.

Proprietà

Item[Int32, Int32]

Ottiene o imposta l'elemento in corrispondenza della riga e della colonna specificate nella ColorMatrix.

Matrix00

Ottiene o imposta l'elemento in corrispondenza della riga 0 (zero) e della colonna 0 di questo ColorMatrix.

Matrix01

Ottiene o imposta l'elemento in corrispondenza della riga 0 (zero) e della prima colonna di questo ColorMatrix.

Matrix02

Ottiene o imposta l'elemento in corrispondenza della riga 0 (zero) e della seconda colonna di questo ColorMatrix.

Matrix03

Ottiene o imposta l'elemento in corrispondenza della riga 0 (zero) e della terza colonna di questo ColorMatrix. Rappresenta il componente alfa.

Matrix04

Ottiene o imposta l'elemento in corrispondenza della riga 0 (zero) e della quarta colonna di questo ColorMatrix.

Matrix10

Ottiene o imposta l'elemento nella prima riga e nella colonna 0 (zero) di questo ColorMatrix.

Matrix11

Ottiene o imposta l'elemento nella prima riga e nella prima colonna di questo ColorMatrix.

Matrix12

Ottiene o imposta l'elemento nella prima riga e nella seconda colonna di questo ColorMatrix.

Matrix13

Ottiene o imposta l'elemento nella prima riga e nella terza colonna di questo ColorMatrix. Rappresenta il componente alfa.

Matrix14

Ottiene o imposta l'elemento nella prima riga e nella quarta colonna di questo ColorMatrix.

Matrix20

Ottiene o imposta l'elemento nella seconda riga e nella colonna 0 (zero) di questa ColorMatrix.

Matrix21

Ottiene o imposta l'elemento nella seconda riga e nella prima colonna di questo ColorMatrix.

Matrix22

Ottiene o imposta l'elemento nella seconda riga e nella seconda colonna di questo ColorMatrix.

Matrix23

Ottiene o imposta l'elemento nella seconda riga e nella terza colonna di questo ColorMatrix.

Matrix24

Ottiene o imposta l'elemento nella seconda riga e nella quarta colonna di questo ColorMatrix.

Matrix30

Ottiene o imposta l'elemento nella terza riga e nella colonna 0 (zero) di questo ColorMatrix.

Matrix31

Ottiene o imposta l'elemento alla terza riga e alla prima colonna di questo ColorMatrix.

Matrix32

Ottiene o imposta l'elemento nella terza riga e nella seconda colonna di questo ColorMatrix.

Matrix33

Ottiene o imposta l'elemento alla terza riga e alla terza colonna di questo ColorMatrix. Rappresenta il componente alfa.

Matrix34

Ottiene o imposta l'elemento nella terza riga e nella quarta colonna di questo ColorMatrix.

Matrix40

Ottiene o imposta l'elemento nella quarta riga e nella colonna 0 (zero) di questa ColorMatrix.

Matrix41

Ottiene o imposta l'elemento alla quarta riga e alla prima colonna di questo ColorMatrix.

Matrix42

Ottiene o imposta l'elemento alla quarta riga e alla seconda colonna di questo ColorMatrix.

Matrix43

Ottiene o imposta l'elemento alla quarta riga e alla terza colonna di questo ColorMatrix. Rappresenta il componente alfa.

Matrix44

Ottiene o imposta l'elemento alla quarta riga e alla quarta colonna di questo ColorMatrix.

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a

Vedi anche