ImageAttributes.SetColorMatrix Metodo

Definizione

Imposta la matrice di regolazione del colore.

Overload

SetColorMatrix(ColorMatrix)

Imposta la matrice di regolazione del colore per la categoria predefinita.

SetColorMatrix(ColorMatrix, ColorMatrixFlag)

Imposta la matrice di regolazione del colore per la categoria predefinita.

SetColorMatrix(ColorMatrix, ColorMatrixFlag, ColorAdjustType)

Imposta la matrice di regolazione del colore per una categoria specificata.

SetColorMatrix(ColorMatrix)

Imposta la matrice di regolazione del colore per la categoria predefinita.

public:
 void SetColorMatrix(System::Drawing::Imaging::ColorMatrix ^ newColorMatrix);
public void SetColorMatrix (System.Drawing.Imaging.ColorMatrix newColorMatrix);
member this.SetColorMatrix : System.Drawing.Imaging.ColorMatrix -> unit
Public Sub SetColorMatrix (newColorMatrix As ColorMatrix)

Parametri

newColorMatrix
ColorMatrix

Matrice di regolazione del colore.

Esempio

L'esempio di codice seguente è progettato per l'uso con Windows Form e richiede PaintEventArgs e , che è un parametro del Paint gestore eventi. Il codice esegue le azioni seguenti:

  1. Crea un'immagine rettangolo con tutti i valori di colore impostati su 128, producendo un rettangolo riempito con un colore a tinta unita. Il codice disegna quindi questa immagine rettangolo sullo schermo.

  2. Crea un oggetto ColorMatrix e ne imposta la Matrix posizione su 1,75, che accentua il componente rosso dell'immagine.

  3. Crea un ImageAttributes oggetto e chiama il SetColorMatrix metodo.

  4. Disegna l'immagine (un secondo rettangolo) sullo schermo utilizzando l' ColorMatrix oggetto appena impostato nell' ImageAttributes oggetto.

Si noti che il secondo rettangolo presenta il colore rosso evidenziato.

private:
   void SetColorMatrixExample( PaintEventArgs^ e )
   {
      // Create a rectangle image with all colors set to 128 (medium
      // gray).
      Bitmap^ myBitmap = gcnew Bitmap( 50,50,PixelFormat::Format32bppArgb );
      Graphics^ g = Graphics::FromImage( myBitmap );
      g->FillRectangle( gcnew SolidBrush( Color::FromArgb( 255, 128, 128, 128 ) ), Rectangle(0,0,50,50) );
      myBitmap->Save( "Rectangle1.jpg" );

      // Open an Image file and draw it to the screen.
      Image^ myImage = Image::FromFile( "Rectangle1.jpg" );
      e->Graphics->DrawImage( myImage, 20, 20 );

      // Initialize the color matrix.
      ColorMatrix^ myColorMatrix = gcnew ColorMatrix;

      // Red
      myColorMatrix->Matrix00 = 1.75f;

      // Green
      myColorMatrix->Matrix11 = 1.00f;

      // Blue
      myColorMatrix->Matrix22 = 1.00f;

      // alpha
      myColorMatrix->Matrix33 = 1.00f;

      // w
      myColorMatrix->Matrix44 = 1.00f;

      // Create an ImageAttributes object and set the color matrix.
      ImageAttributes^ imageAttr = gcnew ImageAttributes;
      imageAttr->SetColorMatrix( myColorMatrix );

      // Draw the image using the color matrix.
      Rectangle rect = Rectangle(100,20,200,200);
      e->Graphics->DrawImage( myImage, rect, 0, 0, 200, 200, GraphicsUnit::Pixel, imageAttr );
   }
private void SetColorMatrixExample(PaintEventArgs e)
{
             
    // Create a rectangle image with all colors set to 128 (medium
             
    // gray).
    Bitmap myBitmap = new Bitmap(50, 50, PixelFormat.Format32bppArgb);
    Graphics g = Graphics.FromImage(myBitmap);
    g.FillRectangle(new SolidBrush(Color.FromArgb(255, 128, 128, 128)),
        new Rectangle(0, 0, 50, 50));
    myBitmap.Save("Rectangle1.jpg");
             
    // Open an Image file and draw it to the screen.
    Image myImage = Image.FromFile("Rectangle1.jpg");
    e.Graphics.DrawImage(myImage, 20, 20);
             
    // Initialize the color matrix.
    ColorMatrix myColorMatrix = new ColorMatrix();
    
    // Red
    myColorMatrix.Matrix00 = 1.75f; 
    
    // Green
    myColorMatrix.Matrix11 = 1.00f; 
    
    // Blue
    myColorMatrix.Matrix22 = 1.00f; 
    
    // alpha
    myColorMatrix.Matrix33 = 1.00f; 
   
    // w
    myColorMatrix.Matrix44 = 1.00f; 

    // Create an ImageAttributes object and set the color matrix.
    ImageAttributes imageAttr = new ImageAttributes();
    imageAttr.SetColorMatrix(myColorMatrix);
             
    // Draw the image using the color matrix.
    Rectangle rect = new Rectangle(100, 20, 200, 200);
    e.Graphics.DrawImage(myImage, rect, 0, 0, 200, 200, 
        GraphicsUnit.Pixel, imageAttr);      
}
Public Sub SetColorMatrixExample(ByVal e As PaintEventArgs)

    ' Create a rectangle image with all colors set to 128 (medium

    ' gray).
    Dim myBitmap As New Bitmap(50, 50, PixelFormat.Format32bppArgb)
    Dim g As Graphics = Graphics.FromImage(myBitmap)
    g.FillRectangle(New SolidBrush(Color.FromArgb(255, 128, 128, _
    128)), New Rectangle(0, 0, 50, 50))
    myBitmap.Save("Rectangle1.jpg")

    ' Open an Image file and draw it to the screen.
    Dim myImage As Image = Image.FromFile("Rectangle1.jpg")
    e.Graphics.DrawImage(myImage, 20, 20)

    ' Initialize the color matrix.
    Dim myColorMatrix As New ColorMatrix
    myColorMatrix.Matrix00 = 1.75F
    ' Red
    myColorMatrix.Matrix11 = 1.0F
    ' Green
    myColorMatrix.Matrix22 = 1.0F
    ' Blue
    myColorMatrix.Matrix33 = 1.0F
    ' alpha
    myColorMatrix.Matrix44 = 1.0F
    ' w

    ' Create an ImageAttributes object and set the color matrix.
    Dim imageAttr As New ImageAttributes
    imageAttr.SetColorMatrix(myColorMatrix)

    ' Draw the image using the color matrix.
    Dim rect As New Rectangle(100, 20, 200, 200)
    e.Graphics.DrawImage(myImage, rect, 0, 0, 200, 200, _
    GraphicsUnit.Pixel, imageAttr)
    ' Image
End Sub
'SetColorMatrixExample

Commenti

Un ImageAttributes oggetto mantiene le impostazioni relative ai colori e alle gradazioni di grigio per cinque categorie di regolazione: predefinita, bitmap, pennello, penna e testo. È ad esempio possibile specificare una matrice di regolazione del colore per la categoria predefinita, una matrice di regolazione del colore diversa per la categoria bitmap e ancora una matrice di regolazione del colore diversa per la categoria Pen.

Le impostazioni predefinite per la regolazione del colore e la regolazione delle gradazioni di grigio si applicano a tutte le categorie per le quali non sono disponibili impostazioni di regolazione. Se, ad esempio, non si specificano mai impostazioni di regolazione per la categoria Pen, le impostazioni predefinite verranno applicate alla categoria Pen.

La chiamata al ImageAttributes.SetColorMatrix(ColorMatrix) metodo equivale alla chiamata al ImageAttributes.SetColorMatrix(ColorMatrix, ColorMatrixFlag) metodo e al passaggio ColorMatrixFlag.Default per il flags parametro. ColorMatrixFlag.Default Specifica che tutti i colori (compresi i grigi) sono regolati dalla matrice di regolazione del colore

Vedi anche

Si applica a

SetColorMatrix(ColorMatrix, ColorMatrixFlag)

Imposta la matrice di regolazione del colore per la categoria predefinita.

public:
 void SetColorMatrix(System::Drawing::Imaging::ColorMatrix ^ newColorMatrix, System::Drawing::Imaging::ColorMatrixFlag flags);
public void SetColorMatrix (System.Drawing.Imaging.ColorMatrix newColorMatrix, System.Drawing.Imaging.ColorMatrixFlag flags);
member this.SetColorMatrix : System.Drawing.Imaging.ColorMatrix * System.Drawing.Imaging.ColorMatrixFlag -> unit
Public Sub SetColorMatrix (newColorMatrix As ColorMatrix, flags As ColorMatrixFlag)

Parametri

newColorMatrix
ColorMatrix

Matrice di regolazione del colore.

flags
ColorMatrixFlag

Elemento dell'oggetto ColorMatrixFlag che specifica il tipo di immagine e colore su cui avrà effetto la matrice di regolazione del colore.

Esempio

Per un esempio di codice, vedere il SetColorMatrix(ColorMatrix) metodo.

Commenti

Un ImageAttributes oggetto mantiene le impostazioni relative ai colori e alle gradazioni di grigio per cinque categorie di regolazione: predefinita, bitmap, pennello, penna e testo. È ad esempio possibile specificare una matrice di regolazione del colore per la categoria predefinita, una matrice di regolazione del colore diversa per la categoria bitmap e ancora una matrice di regolazione del colore diversa per la categoria Pen.

Le impostazioni predefinite per la regolazione del colore e la regolazione delle gradazioni di grigio si applicano a tutte le categorie per le quali non sono disponibili impostazioni di regolazione. Se, ad esempio, non si specificano mai impostazioni di regolazione per la categoria Pen, le impostazioni predefinite verranno applicate alla categoria Pen.

Vedi anche

Si applica a

SetColorMatrix(ColorMatrix, ColorMatrixFlag, ColorAdjustType)

Imposta la matrice di regolazione del colore per una categoria specificata.

public:
 void SetColorMatrix(System::Drawing::Imaging::ColorMatrix ^ newColorMatrix, System::Drawing::Imaging::ColorMatrixFlag mode, System::Drawing::Imaging::ColorAdjustType type);
public void SetColorMatrix (System.Drawing.Imaging.ColorMatrix newColorMatrix, System.Drawing.Imaging.ColorMatrixFlag mode, System.Drawing.Imaging.ColorAdjustType type);
member this.SetColorMatrix : System.Drawing.Imaging.ColorMatrix * System.Drawing.Imaging.ColorMatrixFlag * System.Drawing.Imaging.ColorAdjustType -> unit
Public Sub SetColorMatrix (newColorMatrix As ColorMatrix, mode As ColorMatrixFlag, type As ColorAdjustType)

Parametri

newColorMatrix
ColorMatrix

Matrice di regolazione del colore.

mode
ColorMatrixFlag

Elemento dell'oggetto ColorMatrixFlag che specifica il tipo di immagine e colore su cui avrà effetto la matrice di regolazione del colore.

type
ColorAdjustType

Elemento dell'oggetto ColorAdjustType da cui viene specificata la categoria per la quale viene impostata la matrice di regolazione del colore.

Esempio

Nell'esempio di codice riportato di seguito viene illustrato come utilizzare il metodo SetColorMatrix. Per eseguire questo esempio, incollare il codice in un Windows Form e chiamare RotateColors dal Paint metodo di gestione degli eventi del form, passando e come PaintEventArgs .

private void RotateColors(PaintEventArgs e)
{
    Bitmap image = new Bitmap("RotationInput.bmp");
    ImageAttributes imageAttributes = new ImageAttributes();
    int width = image.Width;
    int height = image.Height;
    float degrees = 60f;
    double r = degrees * System.Math.PI / 180; // degrees to radians

    float[][] colorMatrixElements = { 
        new float[] {(float)System.Math.Cos(r),  (float)System.Math.Sin(r),  0,  0, 0},
        new float[] {(float)-System.Math.Sin(r),  (float)-System.Math.Cos(r),  0,  0, 0},
        new float[] {0,  0,  2,  0, 0},
        new float[] {0,  0,  0,  1, 0},
        new float[] {0, 0, 0, 0, 1}};

    ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements);

    imageAttributes.SetColorMatrix(
       colorMatrix,
       ColorMatrixFlag.Default,
       ColorAdjustType.Bitmap);

    e.Graphics.DrawImage(image, 10, 10, width, height);

    e.Graphics.DrawImage(
       image,
       new Rectangle(150, 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);
}
Private Sub RotateColors(ByVal e As PaintEventArgs)
    Dim image As Bitmap = New Bitmap("RotationInput.bmp")
    Dim imageAttributes As New ImageAttributes()
    Dim width As Integer = image.Width
    Dim height As Integer = image.Height
    Dim degrees As Single = 60.0F
    Dim r As Double = degrees * System.Math.PI / 180 ' degrees to radians
    Dim colorMatrixElements As Single()() = { _
       New Single() {CSng(System.Math.Cos(r)), _
                     CSng(System.Math.Sin(r)), 0, 0, 0}, _
       New Single() {CSng(-System.Math.Sin(r)), _
                     CSng(-System.Math.Cos(r)), 0, 0, 0}, _
       New Single() {0, 0, 2, 0, 0}, _
       New Single() {0, 0, 0, 1, 0}, _
       New Single() {0, 0, 0, 0, 1}}

    Dim colorMatrix As New ColorMatrix(colorMatrixElements)

    imageAttributes.SetColorMatrix( _
       colorMatrix, _
       ColorMatrixFlag.Default, _
       ColorAdjustType.Bitmap)

    e.Graphics.DrawImage(image, 10, 10, width, height)

    ' Pass in the destination rectangle (2nd argument), the upper-left corner 
    ' (3rd and 4th arguments), width (5th argument),  and height (6th 
    ' argument) of the source rectangle.
    e.Graphics.DrawImage( _
       image, _
       New Rectangle(150, 10, width, height), _
       0, 0, _
       width, _
       height, _
       GraphicsUnit.Pixel, _
       imageAttributes)
End Sub

Commenti

Un ImageAttributes oggetto mantiene le impostazioni relative ai colori e alle gradazioni di grigio per cinque categorie di regolazione: predefinita, bitmap, pennello, penna e testo. È ad esempio possibile specificare una matrice di regolazione del colore per la categoria predefinita, una matrice di regolazione del colore diversa per la categoria bitmap e ancora una matrice di regolazione del colore diversa per la categoria Pen.

Le impostazioni predefinite per la regolazione del colore e la regolazione delle gradazioni di grigio si applicano a tutte le categorie per le quali non sono disponibili impostazioni di regolazione. Se, ad esempio, non si specificano mai impostazioni di regolazione per la categoria Pen, le impostazioni predefinite verranno applicate alla categoria Pen.

Non appena si specifica un'impostazione di regolazione del colore o di regolazione delle gradazioni di grigio per una determinata categoria, le impostazioni di regolazione predefinite non sono più valide per tale categoria. Si supponga, ad esempio, di specificare una raccolta di impostazioni di regolazione per la categoria predefinita. Se si imposta la matrice di regolazione del colore per la categoria Pen passando Pen al SetColorMatrix metodo, nessuna delle impostazioni di regolazione predefinite si applicherà alle penne.

Si applica a