ColorMatrix Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Definuje matici 5 x 5, která obsahuje souřadnice pro prostor RGBAW. Několik metod ImageAttributes třídy upravuje barvy obrázků pomocí barevné matice. Tato třída se nemůže dě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ý má 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.
Kód v následujícím příkladu používá k přebarvení následující kroky:
Inicializuje ColorMatrix objekt.
ImageAttributes Create objekt a předejte ColorMatrix objekt metodě SetColorMatrix objektuImageAttributes.
Předejte ImageAttributes objekt metodě DrawImage objektu Graphics .
Předchozí příklad je navržený pro použití s model Windows Forms a vyžaduje PaintEventArgse
, což je parametr obslužné rutiny Paint události.
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 jako červená, zelená, modrá, 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:
Dvojitá červená komponenta
Přidání 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í.
Prvky barevné matice jsou indexovány (založené na nule) po řádcích a potom sloupcích. Například položka v pátém řádku a třetím sloupci matice M je označena M[4][2].
Matice identit 5×5 (znázorněná na následujícím obrázku) má 1s na diagonále a 0 všude jinde. Pokud vynásobíte barevný vektor maticí identit, barevný vektor se nezmění. Vhodným způsobem, jak vytvořit matici transformace barev, je začít s maticí identit a provést malou změnu, která vytvoří požadovanou transformaci.
Podrobnější informace o maticích a transformacích najdete v tématu Souřadnicové systémy a transformace.
Konstruktory
ColorMatrix() |
Inicializuje novou instanci ColorMatrix třídy. |
ColorMatrix(ReadOnlySpan<Single>) |
Definuje matici 5 x 5, která obsahuje souřadnice pro prostor RGBAW. Několik metod ImageAttributes třídy upravuje barvy obrázků pomocí barevné matice. Tato třída se nemůže dědit. |
ColorMatrix(Single[][]) |
Inicializuje novou instanci ColorMatrix třídy pomocí elementů v zadané matici |
Vlastnosti
Item[Int32, Int32] |
Získá nebo nastaví element v zadaném řádku a sloupci ColorMatrixv . |
Matrix00 |
Získá nebo nastaví element na 0 (nula) řádek a 0 sloupec tohoto ColorMatrix. |
Matrix01 |
Získá nebo nastaví element na řádku 0 (nula) a první sloupec tohoto ColorMatrix. |
Matrix02 |
Získá nebo nastaví element na řádku 0 (nula) a druhý sloupec tohoto ColorMatrix. |
Matrix03 |
Získá nebo nastaví element na řádku 0 (nula) a třetí sloupec tohoto ColorMatrix. Představuje komponentu alfa. |
Matrix04 |
Získá nebo nastaví element na řádku 0 (nula) a čtvrtém sloupci tohoto ColorMatrix. |
Matrix10 |
Získá nebo nastaví element na prvním řádku a 0 (nula) sloupec tohoto ColorMatrix. |
Matrix11 |
Získá nebo nastaví element v prvním řádku a prvním sloupci tohoto ColorMatrix. |
Matrix12 |
Získá nebo nastaví element na prvním řádku a druhém sloupci tohoto ColorMatrix. |
Matrix13 |
Získá nebo nastaví element na prvním řádku a třetím sloupci tohoto ColorMatrix. Představuje komponentu alfa. |
Matrix14 |
Získá nebo nastaví element v prvním řádku a čtvrtém sloupci tohoto ColorMatrix. |
Matrix20 |
Získá nebo nastaví element na druhém řádku a 0 (nula) sloupce tohoto ColorMatrix. |
Matrix21 |
Získá nebo nastaví element na druhém řádku a prvním sloupci tohoto ColorMatrix. |
Matrix22 |
Získá nebo nastaví element na druhém řádku a druhém sloupci tohoto ColorMatrix. |
Matrix23 |
Získá nebo nastaví element na druhém řádku a třetím sloupci tohoto ColorMatrix. |
Matrix24 |
Získá nebo nastaví element na druhém řádku a čtvrtém sloupci tohoto ColorMatrix. |
Matrix30 |
Získá nebo nastaví element na třetím řádku a 0 (nula) sloupec tohoto ColorMatrix. |
Matrix31 |
Získá nebo nastaví element na třetím řádku a prvním sloupci tohoto ColorMatrix. |
Matrix32 |
Získá nebo nastaví element na třetím řádku a druhém sloupci tohoto ColorMatrix. |
Matrix33 |
Získá nebo nastaví element na třetím řádku a třetím sloupci tohoto ColorMatrix. Představuje komponentu alfa. |
Matrix34 |
Získá nebo nastaví element na třetím řádku a čtvrtém sloupci tohoto ColorMatrix. |
Matrix40 |
Získá nebo nastaví element na čtvrtém řádku a 0 (nula) sloupec tohoto ColorMatrix. |
Matrix41 |
Získá nebo nastaví element na čtvrtém řádku a prvním sloupci tohoto ColorMatrix. |
Matrix42 |
Získá nebo nastaví element na čtvrtém řádku a druhém sloupci tohoto ColorMatrix. |
Matrix43 |
Získá nebo nastaví element na čtvrtém řádku a třetím sloupci tohoto ColorMatrix. Představuje komponentu alfa. |
Matrix44 |
Získá nebo nastaví element na čtvrtém řádku a čtvrtém sloupci tohoto ColorMatrix. |
Metody
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (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é
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro