Sdílet prostřednictvím


ImageAttributes.SetColorMatrix Metoda

Definice

Nastaví matici pro úpravu barev.

Přetížení

SetColorMatrix(ColorMatrix)

Nastaví matici nastavení barev pro výchozí kategorii.

SetColorMatrix(ColorMatrix, ColorMatrixFlag)

Nastaví matici nastavení barev pro výchozí kategorii.

SetColorMatrix(ColorMatrix, ColorMatrixFlag, ColorAdjustType)

Nastaví matici úprav barev pro zadanou kategorii.

SetColorMatrix(ColorMatrix)

Zdroj:
ImageAttributes.cs
Zdroj:
ImageAttributes.cs
Zdroj:
ImageAttributes.cs
Zdroj:
ImageAttributes.cs
Zdroj:
ImageAttributes.cs

Nastaví matici nastavení barev pro výchozí kategorii.

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)

Parametry

newColorMatrix
ColorMatrix

Matice pro úpravu barev.

Příklady

Následující příklad kódu je určený pro použití s Windows Forms a vyžaduje PaintEventArgse, což je parametr obslužné rutiny události Paint. Kód provede následující akce:

  1. Vytvoří obdélníkový obrázek, který má všechny hodnoty barev nastavené na 128 a vytvoří obdélník vyplněný plnou středně šedou barvou. Kód pak nakreslí tento obdélníkový obrázek na obrazovku.

  2. Vytvoří ColorMatrix a nastaví jeho Matrix umístění na 1,75, což zvýrazní červenou komponentu obrázku.

  3. Vytvoří objekt ImageAttributes a zavolá metodu SetColorMatrix.

  4. Nakreslí obrázek (druhý obdélník) na obrazovku pomocí ColorMatrix právě nastaveného v objektu ImageAttributes.

Všimněte si, že druhý obdélník má zvýrazněnou barvu červenou.

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

Poznámky

Objekt ImageAttributes udržuje nastavení barev a stupňů šedé pro pět kategorií úprav: výchozí, rastrový obrázek, štětec, pero a text. Můžete například zadat matici pro úpravu barev pro výchozí kategorii, jinou matici úprav barev pro kategorii rastrového obrázku a stále jinou matici pro úpravu barev pro kategorii pera.

Výchozí nastavení úprav barev a úprav ve stupních šedé platí pro všechny kategorie, které nemají vlastní nastavení úprav. Pokud například nikdy nezadáte žádné nastavení úprav pro kategorii pera, použije se výchozí nastavení pro kategorii pera.

Volání metody ImageAttributes.SetColorMatrix(ColorMatrix) odpovídá volání metody ImageAttributes.SetColorMatrix(ColorMatrix, ColorMatrixFlag) a předání ColorMatrixFlag.Default parametru flags. ColorMatrixFlag.Default určuje, že všechny barvy (včetně šedých) jsou upraveny maticí pro úpravu barev.

Viz také

Platí pro

SetColorMatrix(ColorMatrix, ColorMatrixFlag)

Zdroj:
ImageAttributes.cs
Zdroj:
ImageAttributes.cs
Zdroj:
ImageAttributes.cs
Zdroj:
ImageAttributes.cs
Zdroj:
ImageAttributes.cs

Nastaví matici nastavení barev pro výchozí kategorii.

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)

Parametry

newColorMatrix
ColorMatrix

Matice pro úpravu barev.

flags
ColorMatrixFlag

Prvek ColorMatrixFlag, který určuje typ obrázku a barvy, které budou ovlivněny maticí úprav barev.

Příklady

Příklad kódu najdete v SetColorMatrix(ColorMatrix) metodě.

Poznámky

Objekt ImageAttributes udržuje nastavení barev a stupňů šedé pro pět kategorií úprav: výchozí, rastrový obrázek, štětec, pero a text. Můžete například zadat matici pro úpravu barev pro výchozí kategorii, jinou matici úprav barev pro kategorii rastrového obrázku a stále jinou matici pro úpravu barev pro kategorii pera.

Výchozí nastavení úprav barev a úprav ve stupních šedé platí pro všechny kategorie, které nemají vlastní nastavení úprav. Pokud například nikdy nezadáte žádné nastavení úprav pro kategorii pera, použije se výchozí nastavení pro kategorii pera.

Viz také

Platí pro

SetColorMatrix(ColorMatrix, ColorMatrixFlag, ColorAdjustType)

Zdroj:
ImageAttributes.cs
Zdroj:
ImageAttributes.cs
Zdroj:
ImageAttributes.cs
Zdroj:
ImageAttributes.cs
Zdroj:
ImageAttributes.cs

Nastaví matici úprav barev pro zadanou kategorii.

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)

Parametry

newColorMatrix
ColorMatrix

Matice pro úpravu barev.

mode
ColorMatrixFlag

Prvek ColorMatrixFlag, který určuje typ obrázku a barvy, které budou ovlivněny maticí úprav barev.

type
ColorAdjustType

Prvek ColorAdjustType, který určuje kategorii, pro kterou je nastavena matice pro úpravu barev.

Příklady

Následující příklad kódu ukazuje, jak použít SetColorMatrix metoda. Pokud chcete tento příklad spustit, vložte kód do formuláře Windows Form a volejte RotateColors z Paint metody zpracování událostí formuláře a předejte e jako 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

Poznámky

Objekt ImageAttributes udržuje nastavení barev a stupňů šedé pro pět kategorií úprav: výchozí, rastrový obrázek, štětec, pero a text. Můžete například zadat matici pro úpravu barev pro výchozí kategorii, jinou matici úprav barev pro kategorii rastrového obrázku a stále jinou matici pro úpravu barev pro kategorii pera.

Výchozí nastavení úprav barev a úprav ve stupních šedé platí pro všechny kategorie, které nemají vlastní nastavení úprav. Pokud například nikdy nezadáte žádné nastavení úprav pro kategorii pera, použije se výchozí nastavení pro kategorii pera.

Jakmile pro určitou kategorii zadáte nastavení úprav barev nebo úprav ve stupních šedé, výchozí nastavení úprav se už na tuto kategorii nevztahuje. Předpokládejme například, že zadáte kolekci nastavení úprav pro výchozí kategorii. Pokud pro kategorii pera nastavíte matici úprav barev tak, že předáte Pen metodě SetColorMatrix, žádné z výchozích nastavení úprav se nepoužije na pera.

Platí pro