ColorMatrix Classe

Définition

Définit une matrice 5 x 5 qui contient les coordonnées de l'espace RGBAW. Plusieurs méthodes de la classe ImageAttributes permettent d'affiner les couleurs d'une image à l'aide d'une matrice de couleurs. Cette classe ne peut pas être héritée.

public ref class ColorMatrix sealed
public sealed class ColorMatrix
type ColorMatrix = class
Public NotInheritable Class ColorMatrix
Héritage
ColorMatrix

Exemples

L’exemple suivant prend une image d’une seule couleur (0.2, 0.0, 0.4, 1.0) et applique la transformation décrite dans les paragraphes précédents.

L’illustration suivante montre l’image d’origine à gauche et l’image transformée à droite.

Couleurs couleurs

Le code de l’exemple suivant utilise les étapes suivantes pour effectuer la recoloration :

  1. Initialiser un ColorMatrix objet.

  2. Create un ImageAttributes objet et passez l’objet ColorMatrix à la SetColorMatrix méthode de l’objet ImageAttributes .

  3. Passez l’objet ImageAttributes à la DrawImage méthode d’un Graphics objet.

L’exemple précédent est conçu pour être utilisé avec Windows Forms et nécessite PaintEventArgse, qui est un paramètre du Paint gestionnaire d’événements

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)

Remarques

Les coefficients de matrice constituent une transformation linéaire de 5 x 5 utilisée pour transformer des valeurs homogènes ARGB. Par exemple, un vecteur ARGB est représenté en rouge, vert, bleu, alpha et w, où w est toujours 1.

Par exemple, supposons que vous souhaitiez commencer par la couleur (0.2, 0.0, 0.4, 1.0) et appliquer les transformations suivantes :

  1. Doubler le composant rouge

  2. Ajouter 0,2 aux composants rouge, vert et bleu

La multiplication de matrice suivante effectue la paire de transformations dans l’ordre indiqué.

Recoloring

Les éléments d’une matrice de couleurs sont indexés (base zéro) par ligne, puis colonne. Par exemple, l’entrée de la cinquième ligne et de la troisième colonne de la matrice M est notée par M[4][2].

La matrice d’identité 5×5 (illustrée dans l’illustration suivante) a 1 sur la diagonale et 0 partout ailleurs. Si vous multipliez un vecteur de couleur par la matrice d’identité, le vecteur de couleur ne change pas. Un moyen pratique de former la matrice d’une transformation de couleur consiste à commencer par la matrice d’identité et à apporter une petite modification qui produit la transformation souhaitée.

Recoloring

Pour une présentation plus détaillée des matrices et des transformations, consultez Systèmes de coordonnées et transformations.

Constructeurs

ColorMatrix()

Initialise une nouvelle instance de la classe ColorMatrix.

ColorMatrix(ReadOnlySpan<Single>)

Définit une matrice 5 x 5 qui contient les coordonnées de l'espace RGBAW. Plusieurs méthodes de la classe ImageAttributes permettent d'affiner les couleurs d'une image à l'aide d'une matrice de couleurs. Cette classe ne peut pas être héritée.

ColorMatrix(Single[][])

Initialise une nouvelle instance de la classe ColorMatrix avec les éléments contenus dans la matrice newColorMatrix spécifiée.

Propriétés

Item[Int32, Int32]

Obtient ou définit l'élément à la ligne et la colonne spécifiées dans le ColorMatrix.

Matrix00

Obtient ou définit l'élément à la ligne 0 (zéro) et la colonne 0 de ce ColorMatrix.

Matrix01

Obtient ou définit l'élément à la ligne 0 (zéro) et la première colonne de ce ColorMatrix.

Matrix02

Obtient ou définit l'élément à la ligne 0 (zéro) et la deuxième colonne de ce ColorMatrix.

Matrix03

Obtient ou définit l'élément à la ligne 0 (zéro) et la troisième colonne de ce ColorMatrix. Représente le composant alpha.

Matrix04

Obtient ou définit l'élément à la ligne 0 (zéro) et la quatrième colonne de ce ColorMatrix.

Matrix10

Obtient ou définit l'élément à la première ligne et la colonne 0 (zéro) de ce ColorMatrix.

Matrix11

Obtient ou définit l'élément à la première ligne et la première colonne de ce ColorMatrix.

Matrix12

Obtient ou définit l'élément à la première ligne et la deuxième colonne de ce ColorMatrix.

Matrix13

Obtient ou définit l'élément à la première ligne et la troisième colonne de ce ColorMatrix. Représente le composant alpha.

Matrix14

Obtient ou définit l'élément à la première ligne et la quatrième colonne de ce ColorMatrix.

Matrix20

Obtient ou définit l'élément à la deuxième ligne et la colonne 0 (zéro) de ce ColorMatrix.

Matrix21

Obtient ou définit l'élément à la deuxième ligne et la première colonne de ce ColorMatrix.

Matrix22

Obtient ou définit l'élément à la deuxième ligne et la deuxième colonne de ce ColorMatrix.

Matrix23

Obtient ou définit l'élément à la deuxième ligne et la troisième colonne de ce ColorMatrix.

Matrix24

Obtient ou définit l'élément à la deuxième ligne et la quatrième colonne de ce ColorMatrix.

Matrix30

Obtient ou définit l'élément à la troisième ligne et la colonne 0 (zéro) de ce ColorMatrix.

Matrix31

Obtient ou définit l'élément à la troisième ligne et la première colonne de ce ColorMatrix.

Matrix32

Obtient ou définit l'élément à la troisième ligne et la deuxième colonne de ce ColorMatrix.

Matrix33

Obtient ou définit l'élément à la troisième ligne et la troisième colonne de ce ColorMatrix. Représente le composant alpha.

Matrix34

Obtient ou définit l'élément à la troisième ligne et la quatrième colonne de ce ColorMatrix.

Matrix40

Obtient ou définit l'élément à la quatrième ligne et la colonne 0 (zéro) de ce ColorMatrix.

Matrix41

Obtient ou définit l'élément à la quatrième ligne et la première colonne de ce ColorMatrix.

Matrix42

Obtient ou définit l'élément à la quatrième ligne et la deuxième colonne de ce ColorMatrix.

Matrix43

Obtient ou définit l'élément à la quatrième ligne et la troisième colonne de ce ColorMatrix. Représente le composant alpha.

Matrix44

Obtient ou définit l'élément à la quatrième ligne et la quatrième colonne de ce ColorMatrix.

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

S’applique à

Voir aussi