ColorMatrix Klasa

Definicja

Definiuje macierz 5 x 5 zawierającą współrzędne przestrzeni RGBAW. Kilka metod ImageAttributes klasy dostosowuje kolory obrazu przy użyciu macierzy kolorów. Klasa ta nie może być dziedziczona.

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 kolorów

Kod w poniższym przykładzie używa następujących kroków, aby wykonać ponowne kolorowanie:

  1. Inicjowanie ColorMatrix obiektu.

  2. ImageAttributes Twórca obiekt i przekaż ColorMatrix obiekt do SetColorMatrix metody ImageAttributes obiektu.

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

Powyższy przykład jest przeznaczony do użycia z Windows Forms i wymaga PaintEventArgseparametru Paint programu obsługi zdarzeń.

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ą transformację liniową 5 x 5, która jest używana do przekształcania wartości homogenicznych ARGB. Na przykład wektor ARGB jest reprezentowany jako czerwony, zielony, niebieski, alfa i w, gdzie wartość 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. Podwojenie czerwonego składnika

  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 (zero oparte) według wiersza, a następnie kolumny. Na przykład wpis w piątym wierszu i trzeciej kolumnie macierzy M jest oznaczony 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 za pomocą macierzy 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 tworzy żądaną transformację.

Ponowne kolorowanie

Aby uzyskać bardziej szczegółową dyskusję na temat macierzy i przekształceń, zobacz Współrzędne 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 ImageAttributes klasy dostosowuje kolory obrazu przy użyciu macierzy kolorów. Klasa ta nie może być dziedziczona.

ColorMatrix(Single[][])

Inicjuje ColorMatrix nowe wystąpienie klasy 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 elemecie ColorMatrix.

Matrix00

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

Matrix01

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

Matrix02

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

Matrix03

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

Matrix04

Pobiera lub ustawia element w wierszu 0 (zero) i czwartą kolumnę tego ColorMatrixelementu .

Matrix10

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

Matrix11

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

Matrix12

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

Matrix13

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

Matrix14

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

Matrix20

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

Matrix21

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

Matrix22

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

Matrix23

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

Matrix24

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

Matrix30

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

Matrix31

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

Matrix32

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

Matrix33

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

Matrix34

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

Matrix40

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

Matrix41

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

Matrix42

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

Matrix43

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

Matrix44

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

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

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

(Odziedziczone po Object)
GetType()

Type Pobiera bieżące wystąpienie.

(Odziedziczone po Object)
MemberwiseClone()

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

(Odziedziczone po Object)
ToString()

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

(Odziedziczone po Object)

Dotyczy

Zobacz też