Classe ColorMatrix (System.Drawing.Imaging)

Cambia visualizzazione:
ScriptFree
Riferimento a .NET Framework
Classe ColorMatrix
Il presente articolo è stato tradotto manualmente. Per visualizzare questa pagina e contemporaneamente visualizzarne il contenuto in lingua inglese, passare alla visualizzazione semplificata.

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.

Gerarchia di ereditarietà

System.Object
  System.Drawing.Imaging.ColorMatrix

Spazio dei nomi:  System.Drawing.Imaging
Assembly:  System.Drawing (in System.Drawing.dll)
Sintassi

Visual Basic
Public NotInheritable Class ColorMatrix
C#
public sealed class ColorMatrix
Visual C++
public ref class ColorMatrix sealed
F#
[<Sealed>]
type ColorMatrix =  class end

Il tipo ColorMatrix espone i seguenti membri.

Costruttori

  Nome Descrizione
Metodo pubblico ColorMatrix() Inizializza una nuova istanza della classe ColorMatrix.
Metodo pubblico ColorMatrix(Single[][]) Inizializza una nuova istanza della classe ColorMatrix utilizzando gli elementi della matrice newColorMatrix specificata.
In alto
Proprietà

  Nome Descrizione
Proprietà pubblica Item Ottiene o imposta l'elemento alla riga e colonna specificate dell'oggetto ColorMatrix.
Proprietà pubblica Matrix00 Ottiene o imposta l'elemento alla riga 0 (zero) e alla colonna 0 dell'oggetto ColorMatrix.
Proprietà pubblica Matrix01 Ottiene o imposta l'elemento alla riga 0 (zero) e alla prima colonna dell'oggetto ColorMatrix.
Proprietà pubblica Matrix02 Ottiene o imposta l'elemento alla riga 0 (zero) e alla seconda colonna dell'oggetto ColorMatrix.
Proprietà pubblica Matrix03 Ottiene o imposta l'elemento alla riga 0 (zero) e alla terza colonna dell'oggetto ColorMatrix. Rappresenta il componente alfa.
Proprietà pubblica Matrix04 Ottiene o imposta l'elemento alla riga 0 (zero) e alla quarta colonna dell'oggetto ColorMatrix.
Proprietà pubblica Matrix10 Ottiene o imposta l'elemento alla prima riga e alla colonna 0 (zero) dell'oggetto ColorMatrix.
Proprietà pubblica Matrix11 Ottiene o imposta l'elemento alla prima riga e alla prima colonna dell'oggetto ColorMatrix.
Proprietà pubblica Matrix12 Ottiene o imposta l'elemento alla prima riga e alla seconda colonna dell'oggetto ColorMatrix.
Proprietà pubblica Matrix13 Ottiene o imposta l'elemento alla prima riga e alla terza colonna dell'oggetto ColorMatrix. Rappresenta il componente alfa.
Proprietà pubblica Matrix14 Ottiene o imposta l'elemento alla prima riga e alla quarta colonna dell'oggetto ColorMatrix.
Proprietà pubblica Matrix20 Ottiene o imposta l'elemento alla seconda riga e alla colonna 0 (zero) dell'oggetto ColorMatrix.
Proprietà pubblica Matrix21 Ottiene o imposta l'elemento alla seconda riga e alla prima colonna dell'oggetto ColorMatrix.
Proprietà pubblica Matrix22 Ottiene o imposta l'elemento alla seconda riga e alla seconda colonna dell'oggetto ColorMatrix.
Proprietà pubblica Matrix23 Ottiene o imposta l'elemento alla seconda riga e alla terza colonna dell'oggetto ColorMatrix.
Proprietà pubblica Matrix24 Ottiene o imposta l'elemento alla seconda riga e alla quarta colonna dell'oggetto ColorMatrix.
Proprietà pubblica Matrix30 Ottiene o imposta l'elemento alla terza riga e alla colonna 0 (zero) dell'oggetto ColorMatrix.
Proprietà pubblica Matrix31 Ottiene o imposta l'elemento alla terza riga e alla prima colonna dell'oggetto ColorMatrix.
Proprietà pubblica Matrix32 Ottiene o imposta l'elemento alla terza riga e alla seconda colonna dell'oggetto ColorMatrix.
Proprietà pubblica Matrix33 Ottiene o imposta l'elemento alla terza riga e alla terza colonna dell'oggetto ColorMatrix. Rappresenta il componente alfa.
Proprietà pubblica Matrix34 Ottiene o imposta l'elemento alla terza riga e alla quarta colonna dell'oggetto ColorMatrix.
Proprietà pubblica Matrix40 Ottiene o imposta l'elemento alla quarta riga e alla colonna 0 (zero) dell'oggetto ColorMatrix.
Proprietà pubblica Matrix41 Ottiene o imposta l'elemento alla quarta riga e alla prima colonna dell'oggetto ColorMatrix.
Proprietà pubblica Matrix42 Ottiene o imposta l'elemento alla quarta riga e alla seconda colonna dell'oggetto ColorMatrix.
Proprietà pubblica Matrix43 Ottiene o imposta l'elemento alla quarta riga e alla terza colonna dell'oggetto ColorMatrix. Rappresenta il componente alfa.
Proprietà pubblica Matrix44 Ottiene o imposta l'elemento alla quarta riga e alla quarta colonna dell'oggetto ColorMatrix.
In alto
Metodi

  Nome Descrizione
Metodo pubblico Equals(Object) Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da Object)
Metodo protetto 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)
Metodo pubblico GetHashCode Funge da funzione hash per un determinato tipo. (Ereditato da Object)
Metodo pubblico GetType Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object)
Metodo protetto MemberwiseClone Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblico ToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
In alto
Note

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:

  1. Raddoppiare la componente rossa

  2. 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.

Ricolorazione

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.

Ricolorazione

Per informazioni dettagliate sulle matrici e le trasformazioni, vedere Sistemi di coordinate e trasformazioni.

Esempi

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.

Colori

Nel codice riportato di seguito la ricolorazione è eseguita tramite i seguenti passaggi:

  1. Inizializzazione di un oggetto ColorMatrix.

  2. Creazione di un oggetto ImageAttributes e passaggio dell'oggetto ColorMatrix al metodo SetColorMatrix dell'oggetto ImageAttributes.

  3. 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.

Visual Basic

        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)



C#

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);


Informazioni sulla versione

.NET Framework

Supportato in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1
Piattaforme

Windows 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.
Codice thread safe

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.
Vedere anche

Riferimenti

Altre risorse