ColorMatrix Classe

Definizione

Definisce una matrice 5x5 contenente le coordinate per lo spazio RGBAW. Nella classe ImageAttributes sono inclusi diversi metodi che consentono di regolare i colori delle immagini mediante una matrice di colori. La classe non può essere ereditata.

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

Esempio

L'esempio seguente accetta 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.

Colori

Il codice nell'esempio seguente usa la procedura seguente per eseguire la ricolorazione:

  1. Inizializzare un ColorMatrix oggetto .

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

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

L'esempio precedente è progettato per l'uso con Windows Form e richiede , che è PaintEventArgs e un parametro del gestore Paint eventi

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 matrice costituiscono una trasformazione lineare di 5 x 5 usata 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 di matrice seguente eseguirà la coppia di trasformazioni nell'ordine elencato.

Ricolorazione

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

La matrice di identità 5×5 (illustrata nella figura seguente) ha 1 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 è 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(Single[][])

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

Proprietà

Item[Int32, Int32]

Ottiene o imposta l'elemento alla riga e colonna specificate dell'oggetto ColorMatrix.

Matrix00

Ottiene o imposta l'elemento alla riga 0 (zero) e alla colonna 0 dell'oggetto ColorMatrix.

Matrix01

Ottiene o imposta l'elemento alla riga 0 (zero) e alla prima colonna dell'oggetto ColorMatrix.

Matrix02

Ottiene o imposta l'elemento alla riga 0 (zero) e alla seconda colonna dell'oggetto ColorMatrix.

Matrix03

Ottiene o imposta l'elemento alla riga 0 (zero) e alla terza colonna dell'oggetto ColorMatrix. Rappresenta il componente alfa.

Matrix04

Ottiene o imposta l'elemento alla riga 0 (zero) e alla quarta colonna dell'oggetto ColorMatrix.

Matrix10

Ottiene o imposta l'elemento alla prima riga e alla colonna 0 (zero) dell'oggetto ColorMatrix.

Matrix11

Ottiene o imposta l'elemento alla prima riga e alla prima colonna dell'oggetto ColorMatrix.

Matrix12

Ottiene o imposta l'elemento alla prima riga e alla seconda colonna dell'oggetto ColorMatrix.

Matrix13

Ottiene o imposta l'elemento alla prima riga e alla terza colonna dell'oggetto ColorMatrix. Rappresenta il componente alfa.

Matrix14

Ottiene o imposta l'elemento alla prima riga e alla quarta colonna dell'oggetto ColorMatrix.

Matrix20

Ottiene o imposta l'elemento alla seconda riga e alla colonna 0 (zero) dell'oggetto ColorMatrix.

Matrix21

Ottiene o imposta l'elemento alla seconda riga e alla prima colonna dell'oggetto ColorMatrix.

Matrix22

Ottiene o imposta l'elemento alla seconda riga e alla seconda colonna dell'oggetto ColorMatrix.

Matrix23

Ottiene o imposta l'elemento alla seconda riga e alla terza colonna dell'oggetto ColorMatrix.

Matrix24

Ottiene o imposta l'elemento alla seconda riga e alla quarta colonna dell'oggetto ColorMatrix.

Matrix30

Ottiene o imposta l'elemento alla terza riga e alla colonna 0 (zero) dell'oggetto ColorMatrix.

Matrix31

Ottiene o imposta l'elemento alla terza riga e alla prima colonna dell'oggetto ColorMatrix.

Matrix32

Ottiene o imposta l'elemento alla terza riga e alla seconda colonna dell'oggetto ColorMatrix.

Matrix33

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

Matrix34

Ottiene o imposta l'elemento alla terza riga e alla quarta colonna dell'oggetto ColorMatrix.

Matrix40

Ottiene o imposta l'elemento alla quarta riga e alla colonna 0 (zero) dell'oggetto ColorMatrix.

Matrix41

Ottiene o imposta l'elemento alla quarta riga e alla prima colonna dell'oggetto ColorMatrix.

Matrix42

Ottiene o imposta l'elemento alla quarta riga e alla seconda colonna dell'oggetto ColorMatrix.

Matrix43

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

Matrix44

Ottiene o imposta l'elemento alla quarta riga e alla quarta colonna dell'oggetto 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 l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a

Vedi anche