ColorMatrix Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Define uma matriz 5 x 5 que contém as coordenadas para o espaço RGBAW. Vários métodos da ImageAttributes classe ajustam as cores das imagens utilizando uma matriz de cores. Esta classe não pode ser herdada.
public ref class ColorMatrix sealed
public sealed class ColorMatrix
type ColorMatrix = class
Public NotInheritable Class ColorMatrix
- Herança
-
ColorMatrix
Exemplos
O exemplo seguinte pega numa imagem que é toda de uma cor (0.2, 0.0, 0.4, 1.0) e aplica a transformação descrita nos parágrafos anteriores.
A ilustração seguinte mostra a imagem original à esquerda e a imagem transformada à direita.
O código no exemplo seguinte utiliza os seguintes passos para realizar a recoloração:
Inicializar um ColorMatrix objeto.
Cria um ImageAttributes objeto e passa o ColorMatrix objeto para o SetColorMatrix método do objeto ImageAttributes .
Passa o ImageAttributes objeto para o DrawImage método de um Graphics objeto.
O exemplo anterior foi concebido para uso com Windows Forms e requer PaintEventArgse, que é um parâmetro do tratador 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)
Observações
Os coeficientes matriciais constituem uma transformação linear de 5 x 5 que é usada para transformar valores homogéneos do ARGB. Por exemplo, um vetor ARGB é representado como vermelho, verde, azul, alfa e w, onde w é sempre 1.
Por exemplo, suponha que quer começar pela cor (0,2, 0,0, 0,4, 1,0) e aplicar as seguintes transformações:
Dobro o componente vermelho
Adicione 0,2 aos componentes vermelho, verde e azul
A seguinte multiplicação de matrizes realizará o par de transformações na ordem listada.
Os elementos de uma matriz de cor são indexados (baseados em zero) por linha e depois por coluna. Por exemplo, a entrada na quinta linha e terceira coluna da matriz M é denotada por M[4][2].
A matriz identidade 5×5 (mostrada na ilustração seguinte) tem 1s na diagonal e 0s em todo o resto. Se multiplicar um vetor de cor pela matriz identidade, o vetor de cor não muda. Uma forma conveniente de formar a matriz de uma transformação de cor é começar pela matriz identidade e fazer uma pequena alteração que produza a transformação desejada.
Para uma discussão mais detalhada sobre matrizes e transformações, veja Sistemas de Coordenadas e Transformações.
Construtores
| Name | Description |
|---|---|
| ColorMatrix() |
Inicializa uma nova instância da ColorMatrix classe. |
| ColorMatrix(ReadOnlySpan<Single>) |
Inicializa uma nova instância da ColorMatrix classe com os elementos da matriz especificada. |
| ColorMatrix(Single[][]) |
Inicializa uma nova instância da ColorMatrix classe usando os elementos da matriz |
Propriedades
| Name | Description |
|---|---|
| Item[Int32, Int32] |
Obtém ou define o elemento na linha e coluna especificadas no ColorMatrix. |
| Matrix00 |
Obtém ou define o elemento na linha 0 (zero) e na coluna 0 desta ColorMatrix. |
| Matrix01 |
Obtém ou define o elemento na linha 0 (zero) e na primeira coluna desta ColorMatrix. |
| Matrix02 |
Obtém ou define o elemento na linha 0 (zero) e na segunda coluna desta ColorMatrix. |
| Matrix03 |
Obtém ou define o elemento na linha 0 (zero) e na terceira coluna desta ColorMatrix. Representa o componente alfa. |
| Matrix04 |
Obtém ou define o elemento na linha 0 (zero) e na quarta coluna desta ColorMatrix. |
| Matrix10 |
Obtém ou define o elemento na primeira linha e na coluna 0 (zero) deste ColorMatrix. |
| Matrix11 |
Obtém ou define o elemento na primeira linha e na primeira coluna deste ColorMatrix. |
| Matrix12 |
Obtém ou define o elemento na primeira linha e na segunda coluna deste ColorMatrix. |
| Matrix13 |
Obtém ou define o elemento na primeira linha e terceira coluna deste ColorMatrix. Representa o componente alfa. |
| Matrix14 |
Obtém ou define o elemento na primeira linha e quarta coluna deste ColorMatrix. |
| Matrix20 |
Obtém ou define o elemento na segunda linha e 0 (zero) coluna desta ColorMatrix. |
| Matrix21 |
Obtém ou define o elemento na segunda linha e na primeira coluna deste ColorMatrix. |
| Matrix22 |
Obtém ou define o elemento na segunda linha e segunda coluna deste ColorMatrix. |
| Matrix23 |
Obtém ou define o elemento na segunda linha e terceira coluna deste ColorMatrix. |
| Matrix24 |
Obtém ou define o elemento na segunda linha e quarta coluna desta ColorMatrix. |
| Matrix30 |
Obtém ou define o elemento na terceira linha e 0 (zero) coluna desta ColorMatrix. |
| Matrix31 |
Obtém ou define o elemento na terceira linha e na primeira coluna deste ColorMatrix. |
| Matrix32 |
Obtém ou define o elemento na terceira linha e segunda coluna deste ColorMatrix. |
| Matrix33 |
Obtém ou define o elemento na terceira linha e terceira coluna deste ColorMatrix. Representa o componente alfa. |
| Matrix34 |
Obtém ou define o elemento na terceira linha e quarta coluna deste ColorMatrix. |
| Matrix40 |
Obtém ou define o elemento na quarta linha e na coluna 0 (zero) desta ColorMatrix. |
| Matrix41 |
Obtém ou define o elemento na quarta linha e na primeira coluna deste ColorMatrix. |
| Matrix42 |
Obtém ou define o elemento na quarta linha e segunda coluna desta ColorMatrix. |
| Matrix43 |
Obtém ou define o elemento na quarta linha e terceira coluna deste ColorMatrix. Representa o componente alfa. |
| Matrix44 |
Obtém ou define o elemento na quarta linha e quarta coluna desta ColorMatrix. |
Métodos
| Name | Description |
|---|---|
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |