Partager via


ColorMatrix Classe

Définition

Définit une matrice de 5 x 5 qui contient les coordonnées de l’espace RVBAW. Plusieurs méthodes de la classe ImageAttributes ajustent les couleurs d’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 qui est toute une 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

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

  1. Initialisez un objet ColorMatrix.

  2. Créez un objet ImageAttributes et transmettez l’objet ColorMatrix à la méthode SetColorMatrix de l’objet ImageAttributes.

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

L’exemple précédent est conçu pour être utilisé avec Windows Forms et nécessite PaintEventArgse, qui est un paramètre du gestionnaire d’événements 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)

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é comme rouge, vert, bleu, alpha et w, où w est toujours 1.

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

  1. Double du composant rouge

  2. Ajouter 0.2 aux composants rouges, verts et bleus

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

recolorier

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

La matrice d’identité 5×5 (illustrée dans l’illustration suivante) comporte 1 sur la diagonale et les 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.

recolorier

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 de 5 x 5 qui contient les coordonnées de l’espace RVBAW. Plusieurs méthodes de la classe ImageAttributes ajustent les couleurs d’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 à l’aide des éléments de la matrice spécifiée newColorMatrix.

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 cette ColorMatrix.

Matrix01

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

Matrix02

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

Matrix03

Obtient ou définit l’élément à la ligne 0 (zéro) et à la troisième colonne de cette 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 cette ColorMatrix.

Matrix10

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

Matrix11

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

Matrix12

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

Matrix13

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

Matrix14

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

Matrix20

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

Matrix21

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

Matrix22

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

Matrix23

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

Matrix24

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

Matrix30

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

Matrix31

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

Matrix32

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

Matrix33

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

Matrix34

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

Matrix40

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

Matrix41

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

Matrix42

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

Matrix43

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

Matrix44

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

Méthodes

Equals(Object)

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

(Hérité de Object)
GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
ToString()

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

(Hérité de Object)

S’applique à

Voir aussi