ColorMatrix Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.
El código del ejemplo siguiente usa los pasos siguientes para realizar el cambio de color:
Inicialice un objeto ColorMatrix.
Cree un objeto ImageAttributes y pase el objeto ColorMatrix al método SetColorMatrix del objeto ImageAttributes.
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:
Duplicar el componente rojo
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.
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.
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 |
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) |