Freigeben über


ImageAttributes.SetColorMatrix Methode

Definition

Legt die Farbanpassungsmatrix fest.

Überlädt

SetColorMatrix(ColorMatrix)

Legt die Farbanpassungsmatrix für die Standardkategorie fest.

SetColorMatrix(ColorMatrix, ColorMatrixFlag)

Legt die Farbanpassungsmatrix für die Standardkategorie fest.

SetColorMatrix(ColorMatrix, ColorMatrixFlag, ColorAdjustType)

Legt die Farbanpassungsmatrix für eine angegebene Kategorie fest.

SetColorMatrix(ColorMatrix)

Quelle:
ImageAttributes.cs
Quelle:
ImageAttributes.cs
Quelle:
ImageAttributes.cs
Quelle:
ImageAttributes.cs
Quelle:
ImageAttributes.cs

Legt die Farbanpassungsmatrix für die Standardkategorie fest.

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)

Parameter

newColorMatrix
ColorMatrix

Die Farbanpassungsmatrix.

Beispiele

Das folgende Codebeispiel wurde für die Verwendung mit Windows Forms entwickelt und erfordert PaintEventArgse, bei dem es sich um einen Parameter des Paint-Ereignishandlers handelt. Der Code führt die folgenden Aktionen aus:

  1. Erstellt ein Rechteckbild mit allen Farbwerten, die auf 128 festgelegt sind, und erzeugt ein Rechteck, das mit einer vollfarbigen mittelgrauen Farbe gefüllt ist. Der Code zeichnet dann dieses Rechteckbild auf den Bildschirm.

  2. Erstellt ein ColorMatrix und legt seine Matrix Position auf 1,75 fest, wodurch die rote Komponente des Bilds hervorgehoben wird.

  3. Erstellt ein ImageAttributes -Objekt und ruft die SetColorMatrix -Methode auf.

  4. Zeichnet das Bild (ein zweites Rechteck) mithilfe der gerade im ImageAttributes-Objekt festgelegten ColorMatrix auf den Bildschirm.

Beachten Sie, dass das zweite Rechteck die Farbe Rot hervorgehoben hat.

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

Hinweise

Ein ImageAttributes-Objekt verwaltet Farb- und Graustufeneinstellungen für fünf Anpassungskategorien: Standard, Bitmap, Pinsel, Stift und Text. Sie können z. B. eine Farbanpassungsmatrix für die Standardkategorie, eine andere Farbanpassungsmatrix für die Bitmapkategorie und dennoch eine andere Farbanpassungsmatrix für die Stiftkategorie angeben.

Die Standardeinstellungen für Farbanpassung und Graustufenanpassung gelten für alle Kategorien, die keine eigenen Anpassungseinstellungen aufweisen. Wenn Sie beispielsweise niemals Anpassungseinstellungen für die Stiftkategorie angeben, gelten die Standardeinstellungen für die Stiftkategorie.

Das Aufrufen der ImageAttributes.SetColorMatrix(ColorMatrix)-Methode entspricht dem Aufrufen der ImageAttributes.SetColorMatrix(ColorMatrix, ColorMatrixFlag)-Methode und dem Übergeben von ColorMatrixFlag.Default für den flags-Parameter. ColorMatrixFlag.Default gibt an, dass alle Farben (einschließlich Grau) durch die Farbanpassungsmatrix angepasst werden.

Weitere Informationen

Gilt für:

SetColorMatrix(ColorMatrix, ColorMatrixFlag)

Quelle:
ImageAttributes.cs
Quelle:
ImageAttributes.cs
Quelle:
ImageAttributes.cs
Quelle:
ImageAttributes.cs
Quelle:
ImageAttributes.cs

Legt die Farbanpassungsmatrix für die Standardkategorie fest.

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)

Parameter

newColorMatrix
ColorMatrix

Die Farbanpassungsmatrix.

flags
ColorMatrixFlag

Ein Element von ColorMatrixFlag, das den Typ des Bilds und der Farbe angibt, der von der Farbanpassungsmatrix beeinflusst wird.

Beispiele

Ein Codebeispiel finden Sie in der SetColorMatrix(ColorMatrix)-Methode.

Hinweise

Ein ImageAttributes-Objekt verwaltet Farb- und Graustufeneinstellungen für fünf Anpassungskategorien: Standard, Bitmap, Pinsel, Stift und Text. Sie können z. B. eine Farbanpassungsmatrix für die Standardkategorie, eine andere Farbanpassungsmatrix für die Bitmapkategorie und dennoch eine andere Farbanpassungsmatrix für die Stiftkategorie angeben.

Die Standardeinstellungen für Farbanpassung und Graustufenanpassung gelten für alle Kategorien, die keine eigenen Anpassungseinstellungen aufweisen. Wenn Sie beispielsweise niemals Anpassungseinstellungen für die Stiftkategorie angeben, gelten die Standardeinstellungen für die Stiftkategorie.

Weitere Informationen

Gilt für:

SetColorMatrix(ColorMatrix, ColorMatrixFlag, ColorAdjustType)

Quelle:
ImageAttributes.cs
Quelle:
ImageAttributes.cs
Quelle:
ImageAttributes.cs
Quelle:
ImageAttributes.cs
Quelle:
ImageAttributes.cs

Legt die Farbanpassungsmatrix für eine angegebene Kategorie fest.

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)

Parameter

newColorMatrix
ColorMatrix

Die Farbanpassungsmatrix.

mode
ColorMatrixFlag

Ein Element von ColorMatrixFlag, das den Typ des Bilds und der Farbe angibt, der von der Farbanpassungsmatrix beeinflusst wird.

type
ColorAdjustType

Ein Element von ColorAdjustType, das die Kategorie angibt, für die die Farbanpassungsmatrix festgelegt ist.

Beispiele

Im folgenden Codebeispiel wird die Verwendung der SetColorMatrix-Methode veranschaulicht. Um dieses Beispiel auszuführen, fügen Sie den Code in ein Windows Form ein, und rufen Sie RotateColors aus der Paint Ereignisbehandlungsmethode des Formulars auf, und übergeben Sie e als 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

Hinweise

Ein ImageAttributes-Objekt verwaltet Farb- und Graustufeneinstellungen für fünf Anpassungskategorien: Standard, Bitmap, Pinsel, Stift und Text. Sie können z. B. eine Farbanpassungsmatrix für die Standardkategorie, eine andere Farbanpassungsmatrix für die Bitmapkategorie und dennoch eine andere Farbanpassungsmatrix für die Stiftkategorie angeben.

Die Standardeinstellungen für Farbanpassung und Graustufenanpassung gelten für alle Kategorien, die keine eigenen Anpassungseinstellungen aufweisen. Wenn Sie beispielsweise niemals Anpassungseinstellungen für die Stiftkategorie angeben, gelten die Standardeinstellungen für die Stiftkategorie.

Sobald Sie eine Farbanpassungs- oder Graustufenanpassungseinstellung für eine bestimmte Kategorie angeben, gelten die Standardeinstellungseinstellungen nicht mehr für diese Kategorie. Angenommen, Sie geben eine Sammlung von Anpassungseinstellungen für die Standardkategorie an. Wenn Sie die Farbanpassungsmatrix für die Stiftkategorie festlegen, indem Sie Pen an die SetColorMatrix Methode übergeben, gelten keine der Standardanpassungseinstellungen für Stifte.

Gilt für: