Udostępnij za pośrednictwem


ImageAttributes.SetColorMatrix Metoda

Definicja

Ustawia macierz dostosowywania kolorów.

Przeciążenia

SetColorMatrix(ColorMatrix)

Ustawia macierz korekty kolorów dla kategorii domyślnej.

SetColorMatrix(ColorMatrix, ColorMatrixFlag)

Ustawia macierz korekty kolorów dla kategorii domyślnej.

SetColorMatrix(ColorMatrix, ColorMatrixFlag, ColorAdjustType)

Ustawia macierz korekty kolorów dla określonej kategorii.

SetColorMatrix(ColorMatrix)

Źródło:
ImageAttributes.cs
Źródło:
ImageAttributes.cs
Źródło:
ImageAttributes.cs
Źródło:
ImageAttributes.cs
Źródło:
ImageAttributes.cs

Ustawia macierz korekty kolorów dla kategorii domyślnej.

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

Macierz dostosowywania kolorów.

Przykłady

Poniższy przykład kodu jest przeznaczony do użycia z formularzami Systemu Windows i wymaga PaintEventArgse, który jest parametrem programu obsługi zdarzeń Paint. Kod wykonuje następujące akcje:

  1. Tworzy obraz prostokątny z wszystkimi wartościami kolorów ustawionymi na 128, tworząc prostokąt wypełniony stałym kolorem średnioszarym. Następnie kod rysuje ten prostokąt na ekranie.

  2. Tworzy ColorMatrix i ustawia lokalizację Matrix na 1,75, która podkreśla czerwony składnik obrazu.

  3. Tworzy obiekt ImageAttributes i wywołuje metodę SetColorMatrix.

  4. Rysuje obraz (drugi prostokąt) na ekran przy użyciu ColorMatrix właśnie ustawionego w obiekcie ImageAttributes.

Pamiętaj, że drugi prostokąt ma wyróżniony kolor czerwony.

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

Uwagi

Obiekt ImageAttributes zachowuje ustawienia koloru i skali szarości dla pięciu kategorii korekty: domyślne, mapy bitowej, pędzla, pióra i tekstu. Można na przykład określić macierz korekty kolorów dla kategorii domyślnej, inną macierz korekty kolorów dla kategorii mapy bitowej i nadal inną macierz korekty kolorów dla kategorii pióra.

Domyślne ustawienia korekty kolorów i korekty skali szarości mają zastosowanie do wszystkich kategorii, które nie mają własnych ustawień korekty. Jeśli na przykład nigdy nie określisz żadnych ustawień korekty dla kategorii pióra, ustawienia domyślne będą stosowane do kategorii pióra.

Wywoływanie metody ImageAttributes.SetColorMatrix(ColorMatrix) jest równoważne wywołaniu metody ImageAttributes.SetColorMatrix(ColorMatrix, ColorMatrixFlag) i przekazaniu ColorMatrixFlag.Default dla parametru flags. ColorMatrixFlag.Default określa, że wszystkie kolory (w tym szarości) są dostosowywane przez macierz korekty kolorów

Zobacz też

Dotyczy

SetColorMatrix(ColorMatrix, ColorMatrixFlag)

Źródło:
ImageAttributes.cs
Źródło:
ImageAttributes.cs
Źródło:
ImageAttributes.cs
Źródło:
ImageAttributes.cs
Źródło:
ImageAttributes.cs

Ustawia macierz korekty kolorów dla kategorii domyślnej.

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

Macierz dostosowywania kolorów.

flags
ColorMatrixFlag

Element ColorMatrixFlag, który określa typ obrazu i koloru, który będzie miał wpływ na macierz dostosowywania kolorów.

Przykłady

Aby zapoznać się z przykładem kodu, zobacz metodę SetColorMatrix(ColorMatrix).

Uwagi

Obiekt ImageAttributes zachowuje ustawienia koloru i skali szarości dla pięciu kategorii korekty: domyślne, mapy bitowej, pędzla, pióra i tekstu. Można na przykład określić macierz korekty kolorów dla kategorii domyślnej, inną macierz korekty kolorów dla kategorii mapy bitowej i nadal inną macierz korekty kolorów dla kategorii pióra.

Domyślne ustawienia korekty kolorów i korekty skali szarości mają zastosowanie do wszystkich kategorii, które nie mają własnych ustawień korekty. Jeśli na przykład nigdy nie określisz żadnych ustawień korekty dla kategorii pióra, ustawienia domyślne będą stosowane do kategorii pióra.

Zobacz też

Dotyczy

SetColorMatrix(ColorMatrix, ColorMatrixFlag, ColorAdjustType)

Źródło:
ImageAttributes.cs
Źródło:
ImageAttributes.cs
Źródło:
ImageAttributes.cs
Źródło:
ImageAttributes.cs
Źródło:
ImageAttributes.cs

Ustawia macierz korekty kolorów dla określonej 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

Macierz dostosowywania kolorów.

mode
ColorMatrixFlag

Element ColorMatrixFlag, który określa typ obrazu i koloru, który będzie miał wpływ na macierz dostosowywania kolorów.

type
ColorAdjustType

Element ColorAdjustType określający kategorię, dla której ustawiono macierz korekty kolorów.

Przykłady

W poniższym przykładzie kodu pokazano, jak używać metody SetColorMatrix. Aby uruchomić ten przykład, wklej kod do formularza systemu Windows i wywołaj RotateColors z metody obsługi zdarzeń Paint formularza, przekazując 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

Uwagi

Obiekt ImageAttributes zachowuje ustawienia koloru i skali szarości dla pięciu kategorii korekty: domyślne, mapy bitowej, pędzla, pióra i tekstu. Można na przykład określić macierz korekty kolorów dla kategorii domyślnej, inną macierz korekty kolorów dla kategorii mapy bitowej i nadal inną macierz korekty kolorów dla kategorii pióra.

Domyślne ustawienia korekty kolorów i korekty skali szarości mają zastosowanie do wszystkich kategorii, które nie mają własnych ustawień korekty. Jeśli na przykład nigdy nie określisz żadnych ustawień korekty dla kategorii pióra, ustawienia domyślne będą stosowane do kategorii pióra.

Gdy tylko określisz ustawienie korekty kolorów lub korekty skali szarości dla określonej kategorii, domyślne ustawienia korekty nie będą już stosowane do tej kategorii. Załóżmy na przykład, że określisz kolekcję ustawień korekty dla kategorii domyślnej. Jeśli ustawisz macierz korekty kolorów dla kategorii pióra, przekazując Pen do metody SetColorMatrix, żadne z domyślnych ustawień korekty nie będzie miało zastosowania do piór.

Dotyczy