ColorMatrix Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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.
colori
Il codice nell'esempio seguente usa i passaggi seguenti per eseguire la ricolorazione:
Inizializzare un oggetto ColorMatrix.
Creare un oggetto ImageAttributes e passare l'oggetto ColorMatrix al metodo SetColorMatrix dell'oggetto ImageAttributes.
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:
Raddoppiare il componente rosso
Aggiungere 0.2 ai componenti rosso, verde e blu
La moltiplicazione della matrice seguente eseguirà la coppia di trasformazioni nell'ordine elencato.
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.
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 |
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) |