ColorMatrix Clase

Definición

Define una matriz de 5 x 5 que contiene las coordenadas del espacio RGBAW. Algunos de los métodos de la clase ImageAttributes ajustan los colores de la imagen mediante una matriz de colores. Esta clase no puede heredarse.

public ref class ColorMatrix sealed
public sealed class ColorMatrix
type ColorMatrix = class
Public NotInheritable Class ColorMatrix
Herencia
ColorMatrix

Ejemplos

En el ejemplo siguiente se toma una imagen que es todo un color (0.2, 0.0, 0.4, 1.0) y se aplica la transformación descrita en los párrafos anteriores.

En la ilustración siguiente se muestra la imagen original a la izquierda y la imagen transformada a la derecha.

Colores

El código del ejemplo siguiente usa los pasos siguientes para realizar el cambio de color:

  1. Inicializa un objeto ColorMatrix.

  2. Crea un objeto ImageAttributes y pasa el objeto ColorMatrix al método SetColorMatrix del objeto ImageAttributes.

  3. Pasa el objeto ImageAttributes al método DrawImage de un objeto Graphics.

El ejemplo anterior está diseñado para su uso con Windows Forms y requiere PaintEventArgse, que es un parámetro del Paint controlador de eventos.

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)

Comentarios

Los coeficientes de matriz constituyen una transformación lineal de 5 x 5 que se usa para transformar valores homogéneos ARGB. Por ejemplo, un vector ARGB se representa como rojo, verde, azul, alfa y w, donde w siempre es 1.

Por ejemplo, supongamos que quiere empezar con el color (0.2, 0.0, 0.4, 1.0) y aplicar las siguientes transformaciones:

  1. Duplique el componente rojo.

  2. Agregue 0.2 a los componentes rojo, verde y azul.

La multiplicación de matrices siguiente realizará el par de transformaciones en el orden indicado.

Volver a colorear

Los elementos de una matriz de colores se indexan (con base cero) por fila y, luego, por columna. Por ejemplo, la entrada de la quinta fila y la tercera columna de la matriz M se indica mediante M[4][2].

La matriz de identidad de 5 × 5 (que se muestra en la ilustración siguiente) tiene unos en la diagonal y ceros en los demás lugares. Si multiplica un vector de color por la matriz de identidad, el vector de color no cambia. Una forma cómoda de formar la matriz de una transformación de color es comenzar con la matriz de identidad y realizar un pequeño cambio que genere la transformación deseada.

Volver a colorear

Para obtener una explicación más detallada de las matrices y las transformaciones, consulte Sistemas de coordenadas y transformaciones.

Constructores

ColorMatrix()

Inicializa una nueva instancia de la clase ColorMatrix.

ColorMatrix(ReadOnlySpan<Single>)

Define una matriz de 5 x 5 que contiene las coordenadas del espacio RGBAW. Algunos de los métodos de la clase ImageAttributes ajustan los colores de la imagen mediante una matriz de colores. Esta clase no puede heredarse.

ColorMatrix(Single[][])

Inicializa una nueva instancia de la clase ColorMatrix mediante los elementos en la matriz especificada newColorMatrix .

Propiedades

Item[Int32, Int32]

Obtiene o establece el elemento de la fila y la columna especificadas en ColorMatrix.

Matrix00

Obtiene o establece el elemento en la fila 0 (cero) y la columna 0 de esta ColorMatrix.

Matrix01

Obtiene o establece el elemento en la fila 0 (cero) y la primera columna de esta ColorMatrix.

Matrix02

Obtiene o establece el elemento en la fila 0 (cero) y la segunda columna de esta ColorMatrix.

Matrix03

Obtiene o establece el elemento en la fila 0 (cero) y la tercera columna de esta ColorMatrix. Representa el componente alfa.

Matrix04

Obtiene o establece el elemento en la fila 0 (cero) y la cuarta columna de esta ColorMatrix.

Matrix10

Obtiene o establece el elemento en la primera fila y la columna 0 (cero) de esta ColorMatrix.

Matrix11

Obtiene o establece el elemento en la primera fila y la primera columna de esta ColorMatrix.

Matrix12

Obtiene o establece el elemento en la primera fila y la segunda columna de esta ColorMatrix.

Matrix13

Obtiene o establece el elemento en la primera fila y la tercera columna de esta ColorMatrix. Representa el componente alfa.

Matrix14

Obtiene o establece el elemento en la primera fila y la cuarta columna de esta ColorMatrix.

Matrix20

Obtiene o establece el elemento en la segunda fila y la columna 0 (cero) de esta ColorMatrix.

Matrix21

Obtiene o establece el elemento en la segunda fila y la primera columna de esta ColorMatrix.

Matrix22

Obtiene o establece el elemento en la segunda fila y la segunda columna de esta ColorMatrix.

Matrix23

Obtiene o establece el elemento en la segunda fila y la tercera columna de esta ColorMatrix.

Matrix24

Obtiene o establece el elemento en la segunda fila y la cuarta columna de esta ColorMatrix.

Matrix30

Obtiene o establece el elemento en la tercera fila y la columna 0 (cero) de esta ColorMatrix.

Matrix31

Obtiene o establece el elemento en la tercera fila y la primera columna de esta ColorMatrix.

Matrix32

Obtiene o establece el elemento en la tercera fila y la segunda columna de esta ColorMatrix.

Matrix33

Obtiene o establece el elemento en la tercera fila y la tercera columna de esta ColorMatrix. Representa el componente alfa.

Matrix34

Obtiene o establece el elemento en la tercera fila y la cuarta columna de esta ColorMatrix.

Matrix40

Obtiene o establece el elemento en la cuarta fila y la columna 0 (cero) de esta ColorMatrix.

Matrix41

Obtiene o establece el elemento en la cuarta fila y la primera columna de esta ColorMatrix.

Matrix42

Obtiene o establece el elemento en la cuarta fila y la segunda columna de esta ColorMatrix.

Matrix43

Obtiene o establece el elemento en la cuarta fila y la tercera columna de esta ColorMatrix. Representa el componente alfa.

Matrix44

Obtiene o establece el elemento en la cuarta fila y la cuarta columna de esta ColorMatrix.

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Consulte también