ColorMatrix Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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:
Inicjowanie obiektu ColorMatrix.
Utwórz obiekt ImageAttributes i przekaż obiekt ColorMatrix do metody SetColorMatrix obiektu ImageAttributes.
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:
Podwaja czerwony składnik
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.
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ę.
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 |
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) |