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.
System.Drawing.Imaging.ColorMatrix
Spazio dei nomi: System.Drawing.Imaging
Assembly: System.Drawing (in System.Drawing.dll)
Public NotInheritable Class ColorMatrix
public sealed class ColorMatrix
public ref class ColorMatrix sealed
[<Sealed>] type ColorMatrix = class end
Il tipo ColorMatrix espone i seguenti membri.
| Nome | Descrizione | |
|---|---|---|
|
ColorMatrix() | Inizializza una nuova istanza della classe ColorMatrix. |
|
ColorMatrix(Single[][]) | Inizializza una nuova istanza della classe ColorMatrix utilizzando gli elementi della matrice newColorMatrix specificata. |
| Nome | Descrizione | |
|---|---|---|
|
Item | 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. |
| Nome | Descrizione | |
|---|---|---|
|
Equals(Object) | Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da Object) |
|
Finalize | Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto stesso venga recuperato dalla procedura di Garbage Collection. (Ereditato da Object) |
|
GetHashCode | Funge da funzione hash per un determinato tipo. (Ereditato da Object) |
|
GetType | Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
|
MemberwiseClone | Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object) |
|
ToString | Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
I coefficienti della matrice costituiscono una trasformazione lineare 5x5 utilizzata per trasformare i valori omogenei ARGB. Ad esempio, un vettore ARGB è rappresentato come red (rosso), green (verde), blue (blu), alpha (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 che seguono:
-
Raddoppiare la componente rossa
-
Aggiungere 0,2 alle componenti rossa, verde e blu
Con la moltiplicazione di matrice riportata di seguito verranno eseguite le coppie di trasformazioni nell'ordine indicato.
Gli elementi di una matrice di colore sono indicizzati in base zero per riga e quindi per colonna. La voce in corrispondenza della quinta riga e della terza colonna della matrice M, ad esempio, è indicata da M[4][2].
La matrice di identità 5×5, riportata nell'illustrazione che segue, presenta 1 sulla diagonale e 0 in qualsiasi altro punto. Se si moltiplica un vettore di colore per la matrice di identità il vettore di colore non cambia. Un modo comodo per formare la matrice di una trasformazione di colore è cominciare con la matrice di identità, quindi apportare una piccola modifica che produca la trasformazione desiderata.
Per informazioni dettagliate sulle matrici e le trasformazioni, vedere Sistemi di coordinate e trasformazioni.
Nell'esempio che segue viene applicata la trasformazione descritta nei paragrafi precedenti a un'immagine monocromatica (0.2, 0.0, 0.4, 1.0).
Nell'illustrazione che segue si mostra l'immagine originale a sinistra e l'immagine trasformata a destra.
Nel codice riportato di seguito la ricolorazione è eseguita tramite i seguenti passaggi:
-
Inizializzazione di un oggetto ColorMatrix.
-
Creazione di un oggetto ImageAttributes e passaggio dell'oggetto ColorMatrix al metodo SetColorMatrix dell'oggetto ImageAttributes.
-
Passaggio dell'oggetto ImageAttributes al metodo DrawImage di un oggetto Graphics.
L'esempio riportato in precedenza è stato creato per essere utilizzato con Windows Form e richiede PaintEventArgs e, un parametro del gestore eventi Paint.
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)
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);
.NET Framework
Supportato in: 4, 3.5, 3.0, 2.0, 1.1, 1.0.NET Framework Client Profile
Supportato in: 4, 3.5 SP1Windows 7, Windows Vista SP1 o versione successiva, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (componenti di base del server non supportati), Windows Server 2008 R2 (componenti di base del server supportati con SP1 o versione successiva), Windows Server 2003 SP2
.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.