ColorMatrix Clase

Definición

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

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 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. Inicialice un objeto ColorMatrix.

  2. Cree un objeto ImageAttributes y pase el objeto ColorMatrix al método SetColorMatrix del objeto ImageAttributes.

  3. Pase 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 controlador de eventos 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)

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 desea empezar con el color (0.2, 0.0, 0.4, 1.0) y aplicar las transformaciones siguientes:

  1. Duplicar el componente rojo

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

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

volver a colorear

Los elementos de una matriz de colores se indexan (basados en cero) por fila y, a continuación, por columna. Por ejemplo, la entrada de la quinta fila y la tercera columna de la matriz M se denota mediante M[4][2].

La matriz de identidad 5×5 (que se muestra en la ilustración siguiente) tiene 1s en la diagonal y 0 en cualquier otra parte. 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 matrices y 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. Varios métodos de la clase ImageAttributes ajustan los colores de la imagen mediante una matriz de colores. Esta clase no se puede heredar.

ColorMatrix(Single[][])

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

Propiedades

Item[Int32, Int32]

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

Matrix00

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

Matrix01

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

Matrix02

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

Matrix03

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

Matrix04

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

Matrix10

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

Matrix11

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

Matrix12

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

Matrix13

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

Matrix14

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

Matrix20

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

Matrix21

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

Matrix22

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

Matrix23

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

Matrix24

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

Matrix30

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

Matrix31

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

Matrix32

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

Matrix33

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

Matrix34

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

Matrix40

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

Matrix41

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

Matrix42

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

Matrix43

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

Matrix44

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

Métodos

Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
GetHashCode()

Actúa como función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Consulte también