ColorMatrix Classe

Definição

Define uma matriz 5x5 que contém as coordenadas para o espaço RGBAW.Defines a 5 x 5 matrix that contains the coordinates for the RGBAW space. Vários métodos da classe ImageAttributes ajustam as cores da imagem usando uma matriz de cores.Several methods of the ImageAttributes class adjust image colors by using a color matrix. Esta classe não pode ser herdada.This class cannot be inherited.

public ref class ColorMatrix sealed
public sealed class ColorMatrix
type ColorMatrix = class
Public NotInheritable Class ColorMatrix
Herança
ColorMatrix

Exemplos

O exemplo a seguir usa uma imagem toda de uma cor (0,2, 0,0, 0,4, 1,0) e aplica a transformação descrita nos parágrafos anteriores.The following example takes an image that is all one color (0.2, 0.0, 0.4, 1.0) and applies the transformation described in the preceding paragraphs.

A ilustração a seguir mostra a imagem original à esquerda e a imagem transformada à direita.The following illustration shows the original image on the left and the transformed image on the right.

CoresColors

O código no exemplo a seguir usa as seguintes etapas para recolorir:The code in the following example uses the following steps to perform the recoloring:

  1. Inicializar um objeto ColorMatrix.Initialize a ColorMatrix object.

  2. Crie um objeto ImageAttributes e passe o objeto ColorMatrix para o método SetColorMatrix do objeto ImageAttributes.Create an ImageAttributes object and pass the ColorMatrix object to the SetColorMatrix method of the ImageAttributes object.

  3. Passe o objeto ImageAttributes para o método DrawImage de um objeto Graphics.Pass the ImageAttributes object to the DrawImage method of a Graphics object.

O exemplo anterior foi projetado para uso com Windows Forms e requer PaintEventArgs e, que é um parâmetro do manipulador de eventos de PaintThe preceding example is designed for use with Windows Forms, and it requires PaintEventArgs e, which is a parameter of the Paint event handler

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)

Comentários

Os coeficientes de matriz constituem uma transformação linear de 5 x 5 que é usada para transformar valores homogêneos ARGB.The matrix coefficients constitute a 5 x 5 linear transformation that is used for transforming ARGB homogeneous values. Por exemplo, um vetor ARGB é representado como vermelho, verde, azul, alfa e w, onde w é sempre 1.For example, an ARGB vector is represented as red, green, blue, alpha and w, where w is always 1.

Por exemplo, suponha que você queira começar com a cor (0,2, 0,0, 0,4, 1,0) e aplicar as seguintes transformações:For example, suppose you want to start with the color (0.2, 0.0, 0.4, 1.0) and apply the following transformations:

  1. Duplicar o componente vermelhoDouble the red component

  2. Adicionar 0,2 aos componentes vermelhos, verdes e azuisAdd 0.2 to the red, green, and blue components

A multiplicação de matriz a seguir executará o par de transformações na ordem listada.The following matrix multiplication will perform the pair of transformations in the order listed.

RecolorindoRecoloring

Os elementos de uma matriz de cores são indexados (baseados em zero) por linha e coluna.The elements of a color matrix are indexed (zero-based) by row and then column. Por exemplo, a entrada na quinta linha e na terceira coluna da matriz M é indicada por M[4][2].For example, the entry in the fifth row and third column of matrix M is denoted by M[4][2].

A matriz de identidade 5 × 5 (mostrada na ilustração a seguir) tem 1s na diagonal e 0s em todos os outros lugares.The 5×5 identity matrix (shown in the following illustration) has 1s on the diagonal and 0s everywhere else. Se você multiplicar um vetor de cor pela matriz de identidade, o vetor de cor não mudará.If you multiply a color vector by the identity matrix, the color vector does not change. Uma maneira conveniente de formar a matriz de uma transformação de cor é começar com a matriz de identidade e fazer uma pequena alteração que produza a transformação desejada.A convenient way to form the matrix of a color transformation is to start with the identity matrix and make a small change that produces the desired transformation.

RecolorindoRecoloring

Para uma discussão mais detalhada de matrizes e transformações, consulte Sistemas de coordenadas e transformações.For a more detailed discussion of matrices and transformations, see Coordinate Systems and Transformations.

Construtores

ColorMatrix()

Inicializa uma nova instância da classe ColorMatrix.Initializes a new instance of the ColorMatrix class.

ColorMatrix(Single[][])

Inicializa uma nova instância da classe ColorMatrix usando os elementos na matriz newColorMatrix especificada.Initializes a new instance of the ColorMatrix class using the elements in the specified matrix newColorMatrix.

Propriedades

Item[Int32, Int32]

Obtém ou define o elemento na linha e coluna especificadas no ColorMatrix.Gets or sets the element at the specified row and column in the ColorMatrix.

Matrix00

Obtém ou define o elemento na linha 0 (zero) e na coluna 0 deste ColorMatrix.Gets or sets the element at the 0 (zero) row and 0 column of this ColorMatrix.

Matrix01

Obtém ou define o elemento na linha 0 (zero) e na primeira coluna deste ColorMatrix.Gets or sets the element at the 0 (zero) row and first column of this ColorMatrix.

Matrix02

Obtém ou define o elemento na linha 0 (zero) e na segunda coluna deste ColorMatrix.Gets or sets the element at the 0 (zero) row and second column of this ColorMatrix.

Matrix03

Obtém ou define o elemento na linha 0 (zero) e na terceira coluna deste ColorMatrix.Gets or sets the element at the 0 (zero) row and third column of this ColorMatrix. Representa o componente alfa.Represents the alpha component.

Matrix04

Obtém ou define o elemento na linha 0 (zero) e na quarta coluna deste ColorMatrix.Gets or sets the element at the 0 (zero) row and fourth column of this ColorMatrix.

Matrix10

Obtém ou define o elemento na primeira linha e na coluna 0 (zero) deste ColorMatrix.Gets or sets the element at the first row and 0 (zero) column of this ColorMatrix.

Matrix11

Obtém ou define o elemento na primeira linha e na primeira coluna deste ColorMatrix.Gets or sets the element at the first row and first column of this ColorMatrix.

Matrix12

Obtém ou define o elemento na primeira linha e na segunda coluna deste ColorMatrix.Gets or sets the element at the first row and second column of this ColorMatrix.

Matrix13

Obtém ou define o elemento na primeira linha e na terceira coluna deste ColorMatrix.Gets or sets the element at the first row and third column of this ColorMatrix. Representa o componente alfa.Represents the alpha component.

Matrix14

Obtém ou define o elemento na primeira linha e na quarta coluna deste ColorMatrix.Gets or sets the element at the first row and fourth column of this ColorMatrix.

Matrix20

Obtém ou define o elemento na segunda linha e na coluna 0 (zero) deste ColorMatrix.Gets or sets the element at the second row and 0 (zero) column of this ColorMatrix.

Matrix21

Obtém ou define o elemento na segunda linha e na primeira coluna deste ColorMatrix.Gets or sets the element at the second row and first column of this ColorMatrix.

Matrix22

Obtém ou define o elemento na segunda linha e na segunda coluna deste ColorMatrix.Gets or sets the element at the second row and second column of this ColorMatrix.

Matrix23

Obtém ou define o elemento na segunda linha e na terceira coluna deste ColorMatrix.Gets or sets the element at the second row and third column of this ColorMatrix.

Matrix24

Obtém ou define o elemento na segunda linha e na quarta coluna deste ColorMatrix.Gets or sets the element at the second row and fourth column of this ColorMatrix.

Matrix30

Obtém ou define o elemento na terceira linha e na coluna 0 (zero) deste ColorMatrix.Gets or sets the element at the third row and 0 (zero) column of this ColorMatrix.

Matrix31

Obtém ou define o elemento na terceira linha e na primeira coluna deste ColorMatrix.Gets or sets the element at the third row and first column of this ColorMatrix.

Matrix32

Obtém ou define o elemento na terceira linha e na segunda coluna deste ColorMatrix.Gets or sets the element at the third row and second column of this ColorMatrix.

Matrix33

Obtém ou define o elemento na terceira linha e na terceira coluna deste ColorMatrix.Gets or sets the element at the third row and third column of this ColorMatrix. Representa o componente alfa.Represents the alpha component.

Matrix34

Obtém ou define o elemento na terceira linha e na quarta coluna deste ColorMatrix.Gets or sets the element at the third row and fourth column of this ColorMatrix.

Matrix40

Obtém ou define o elemento na quarta linha e na coluna 0 (zero) deste ColorMatrix.Gets or sets the element at the fourth row and 0 (zero) column of this ColorMatrix.

Matrix41

Obtém ou define o elemento na quarta linha e na primeira coluna deste ColorMatrix.Gets or sets the element at the fourth row and first column of this ColorMatrix.

Matrix42

Obtém ou define o elemento na quarta linha e na segunda coluna deste ColorMatrix.Gets or sets the element at the fourth row and second column of this ColorMatrix.

Matrix43

Obtém ou define o elemento na quarta linha e na terceira coluna deste ColorMatrix.Gets or sets the element at the fourth row and third column of this ColorMatrix. Representa o componente alfa.Represents the alpha component.

Matrix44

Obtém ou define o elemento na quarta linha e na quarta coluna deste ColorMatrix.Gets or sets the element at the fourth row and fourth column of this ColorMatrix.

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.Serves as the default hash function.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.Gets the Type of the current instance.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object.

(Herdado de Object)

Aplica-se a

Veja também