Udostępnij za pośrednictwem


ColorMatrix Klasa

Definicja

Definiuje macierz 5 x 5 zawierającą współrzędne przestrzeni RGBAW. Kilka metod klasy ImageAttributes dostosowuje kolory obrazów przy użyciu macierzy kolorów. Tej klasy nie można dziedziczyć.

public ref class ColorMatrix sealed
public sealed class ColorMatrix
type ColorMatrix = class
Public NotInheritable Class ColorMatrix
Dziedziczenie
ColorMatrix

Przykłady

Poniższy przykład przedstawia obraz, który jest jednym kolorem (0.2, 0.0, 0.4, 1.0) i stosuje transformację opisaną w poprzednich akapitach.

Poniższa ilustracja przedstawia oryginalny obraz po lewej stronie i przekształcony obraz po prawej stronie.

kolory

Kod w poniższym przykładzie używa następujących kroków w celu ponownego kolorowania:

  1. Inicjowanie obiektu ColorMatrix.

  2. Utwórz obiekt ImageAttributes i przekaż obiekt ColorMatrix do metody SetColorMatrix obiektu ImageAttributes.

  3. Przekaż obiekt ImageAttributes do metody DrawImage obiektu Graphics.

Powyższy przykład jest przeznaczony do użycia z windows Forms i wymaga PaintEventArgse, który jest parametrem programu obsługi zdarzeń Paint

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

Uwagi

Współczynniki macierzy stanowią 5 x 5 transformacji liniowej używanej do przekształcania homogenicznych wartości ARGB. Na przykład wektor ARGB jest reprezentowany jako czerwony, zielony, niebieski, alfa i w, gdzie w jest zawsze 1.

Załóżmy na przykład, że chcesz zacząć od koloru (0.2, 0.0, 0.4, 1.0) i zastosować następujące przekształcenia:

  1. Podwaja czerwony składnik

  2. Dodaj 0.2 do czerwonych, zielonych i niebieskich składników

Następujące mnożenie macierzy wykona parę przekształceń w podanej kolejności.

ponowne kolorowanie

Elementy macierzy kolorów są indeksowane (oparte na zerze) według wiersza, a następnie kolumny. Na przykład wpis w piątym wierszu i trzeciej kolumnie macierzy M jest oznaczany przez M[4][2].

Macierz tożsamości 5×5 (pokazana na poniższej ilustracji) ma 1s na przekątnej i 0s wszędzie indziej. Jeśli pomnożysz wektor kolorów przez macierz tożsamości, wektor kolorów nie zmieni się. Wygodnym sposobem utworzenia macierzy transformacji kolorów jest rozpoczęcie od macierzy tożsamości i wprowadzenie małej zmiany, która generuje żądaną transformację.

ponowne kolorowanie

Aby zapoznać się z bardziej szczegółowym omówieniem macierzy i przekształceń, zobacz Koordynujące systemy i przekształcenia.

Konstruktory

ColorMatrix()

Inicjuje nowe wystąpienie klasy ColorMatrix.

ColorMatrix(ReadOnlySpan<Single>)

Definiuje macierz 5 x 5 zawierającą współrzędne przestrzeni RGBAW. Kilka metod klasy ImageAttributes dostosowuje kolory obrazów przy użyciu macierzy kolorów. Tej klasy nie można dziedziczyć.

ColorMatrix(Single[][])

Inicjuje nowe wystąpienie klasy ColorMatrix przy użyciu elementów w określonej macierzy newColorMatrix.

Właściwości

Item[Int32, Int32]

Pobiera lub ustawia element w określonym wierszu i kolumnie w ColorMatrix.

Matrix00

Pobiera lub ustawia element w wierszu 0 (zero) i 0 tej ColorMatrix.

Matrix01

Pobiera lub ustawia element w wierszu 0 (zero) i pierwszej kolumnie tego ColorMatrix.

Matrix02

Pobiera lub ustawia element w wierszu 0 (zero) i drugiej kolumnie tego ColorMatrix.

Matrix03

Pobiera lub ustawia element w wierszu 0 (zero) i trzeciej kolumnie tego ColorMatrix. Reprezentuje składnik alfa.

Matrix04

Pobiera lub ustawia element w wierszu 0 (zero) i czwartej kolumnie tego ColorMatrix.

Matrix10

Pobiera lub ustawia element w pierwszym wierszu i 0 (zero) tej ColorMatrix.

Matrix11

Pobiera lub ustawia element w pierwszym wierszu i pierwszej kolumnie tego ColorMatrix.

Matrix12

Pobiera lub ustawia element w pierwszym wierszu i drugiej kolumnie tego ColorMatrix.

Matrix13

Pobiera lub ustawia element w pierwszym wierszu i trzeciej kolumnie tego ColorMatrix. Reprezentuje składnik alfa.

Matrix14

Pobiera lub ustawia element w pierwszym wierszu i czwartej kolumnie tego ColorMatrix.

Matrix20

Pobiera lub ustawia element w drugim wierszu i 0 (zero) tej ColorMatrix.

Matrix21

Pobiera lub ustawia element w drugim wierszu i pierwszej kolumnie tego ColorMatrix.

Matrix22

Pobiera lub ustawia element w drugim wierszu i drugiej kolumnie tego ColorMatrix.

Matrix23

Pobiera lub ustawia element w drugim wierszu i trzeciej kolumnie tego ColorMatrix.

Matrix24

Pobiera lub ustawia element w drugim wierszu i czwartej kolumnie tego ColorMatrix.

Matrix30

Pobiera lub ustawia element w trzecim wierszu i 0 (zero) tej ColorMatrix.

Matrix31

Pobiera lub ustawia element w trzecim wierszu i pierwszej kolumnie tego ColorMatrix.

Matrix32

Pobiera lub ustawia element w trzecim wierszu i drugiej kolumnie tego ColorMatrix.

Matrix33

Pobiera lub ustawia element w trzecim wierszu i trzeciej kolumnie tego ColorMatrix. Reprezentuje składnik alfa.

Matrix34

Pobiera lub ustawia element w trzecim wierszu i czwartej kolumnie tego ColorMatrix.

Matrix40

Pobiera lub ustawia element w czwartym wierszu i 0 (zero) tej ColorMatrix.

Matrix41

Pobiera lub ustawia element w czwartym wierszu i pierwszej kolumnie tego ColorMatrix.

Matrix42

Pobiera lub ustawia element w czwartym wierszu i drugiej kolumnie tego ColorMatrix.

Matrix43

Pobiera lub ustawia element w czwartym wierszu i trzeciej kolumnie tego ColorMatrix. Reprezentuje składnik alfa.

Matrix44

Pobiera lub ustawia element w czwartym wierszu i czwartej kolumnie tego ColorMatrix.

Metody

Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Pobiera Type bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Object.

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy

Zobacz też