Sdílet prostřednictvím


ColorMatrix Třída

Definice

Definuje matici 5 x 5, která obsahuje souřadnice prostoru RGBAW. Několik metod ImageAttributes třídy upravuje barvy obrázků pomocí barevné matice. Tuto třídu nelze zdědit.

public ref class ColorMatrix sealed
public sealed class ColorMatrix
type ColorMatrix = class
Public NotInheritable Class ColorMatrix
Dědičnost
ColorMatrix

Příklady

Následující příklad vezme obrázek, který je všechny barvy (0.2, 0.0, 0.4, 1.0) a použije transformaci popsanou v předchozích odstavcích.

Následující obrázek znázorňuje původní obrázek vlevo a transformovaný obrázek vpravo.

barvy barvy

Kód v následujícím příkladu používá k přebarvení následující kroky:

  1. Inicializace objektu ColorMatrix

  2. Vytvořte objekt ImageAttributes a předejte objekt ColorMatrix metodě SetColorMatrix objektu ImageAttributes.

  3. Předejte objekt ImageAttributes metodě DrawImage objektu Graphics.

Předchozí příklad je určen pro použití s Windows Forms a vyžaduje PaintEventArgse, což je parametr obslužné rutiny události 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)

Poznámky

Maticové koeficienty představují lineární transformaci 5 x 5, která se používá k transformaci homogenních hodnot ARGB. Například vektor ARGB je reprezentován červenou, zelenou, modrou, alfa a w, kde w je vždy 1.

Předpokládejme například, že chcete začít barvou (0.2, 0.0, 0.4, 1.0) a použít následující transformace:

  1. Dvojitá červená komponenta

  2. Přidejte 0,2 k červeným, zeleným a modrým komponentám.

Následující násobení matice provede dvojici transformací v uvedeném pořadí.

přebarvení

Prvky barevné matice se indexují (založené na nule) podle řádku a potom sloupce. Například položka v pátém řádku a třetím sloupci matice M je označena maticí M[4][2].

Matice identit 5×5 (znázorněná na následujícím obrázku) má 1s na diagonále a 0s všude jinde. Pokud vynásobíte barevný vektor maticí identity, barevný vektor se nezmění. Pohodlný způsob, jak vytvořit matici transformace barev, je začít s maticí identity a provést malou změnu, která vytváří požadovanou transformaci.

přebarvení

Podrobnější informace o maticích a transformacích najdete v tématu souřadnicových systémů a transformací.

Konstruktory

ColorMatrix()

Inicializuje novou instanci ColorMatrix třídy.

ColorMatrix(ReadOnlySpan<Single>)

Definuje matici 5 x 5, která obsahuje souřadnice prostoru RGBAW. Několik metod ImageAttributes třídy upravuje barvy obrázků pomocí barevné matice. Tuto třídu nelze zdědit.

ColorMatrix(Single[][])

Inicializuje novou instanci třídy ColorMatrix pomocí prvků v zadané matici newColorMatrix.

Vlastnosti

Item[Int32, Int32]

Získá nebo nastaví prvek na zadaný řádek a sloupec v ColorMatrix.

Matrix00

Získá nebo nastaví prvek na řádku 0 (nula) a 0 sloupec tohoto ColorMatrix.

Matrix01

Získá nebo nastaví prvek na řádku 0 (nula) a první sloupec tohoto ColorMatrix.

Matrix02

Získá nebo nastaví prvek na řádku 0 (nula) a druhý sloupec tohoto ColorMatrix.

Matrix03

Získá nebo nastaví prvek na řádku 0 (nula) a třetí sloupec tohoto ColorMatrix. Představuje alfa komponentu.

Matrix04

Získá nebo nastaví prvek na řádku 0 (nula) a čtvrtý sloupec tohoto ColorMatrix.

Matrix10

Získá nebo nastaví prvek na prvním řádku a 0 (nula) sloupec tohoto ColorMatrix.

Matrix11

Získá nebo nastaví prvek na prvním řádku a prvním sloupci tohoto ColorMatrix.

Matrix12

Získá nebo nastaví prvek na prvním řádku a druhém sloupci tohoto ColorMatrix.

Matrix13

Získá nebo nastaví prvek na prvním řádku a třetí sloupec tohoto ColorMatrix. Představuje alfa komponentu.

Matrix14

Získá nebo nastaví prvek na prvním řádku a čtvrtém sloupci tohoto ColorMatrix.

Matrix20

Získá nebo nastaví prvek na druhém řádku a 0 (nula) sloupce tohoto ColorMatrix.

Matrix21

Získá nebo nastaví prvek na druhém řádku a prvním sloupci tohoto ColorMatrix.

Matrix22

Získá nebo nastaví prvek na druhém řádku a druhém sloupci tohoto ColorMatrix.

Matrix23

Získá nebo nastaví prvek na druhém řádku a třetím sloupci tohoto ColorMatrix.

Matrix24

Získá nebo nastaví prvek na druhém řádku a čtvrtém sloupci tohoto ColorMatrix.

Matrix30

Získá nebo nastaví prvek na třetím řádku a 0 (nula) sloupec tohoto ColorMatrix.

Matrix31

Získá nebo nastaví prvek na třetím řádku a první sloupec tohoto ColorMatrix.

Matrix32

Získá nebo nastaví prvek na třetím řádku a druhém sloupci tohoto ColorMatrix.

Matrix33

Získá nebo nastaví prvek na třetím řádku a třetí sloupec tohoto ColorMatrix. Představuje alfa komponentu.

Matrix34

Získá nebo nastaví prvek na třetím řádku a čtvrtém sloupci tohoto ColorMatrix.

Matrix40

Získá nebo nastaví prvek na čtvrtém řádku a 0 (nula) sloupec tohoto ColorMatrix.

Matrix41

Získá nebo nastaví prvek na čtvrtém řádku a prvním sloupci tohoto ColorMatrix.

Matrix42

Získá nebo nastaví prvek na čtvrtém řádku a druhém sloupci tohoto ColorMatrix.

Matrix43

Získá nebo nastaví prvek na čtvrtém řádku a třetím sloupci tohoto ColorMatrix. Představuje alfa komponentu.

Matrix44

Získá nebo nastaví prvek na čtvrtém řádku a čtvrtém sloupci tohoto ColorMatrix.

Metody

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro

Viz také