ColorMatrix Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Define uma matriz 5x5 que contém as coordenadas para o espaço RGBAW. Vários métodos da classe ImageAttributes ajustam as cores da imagem usando uma matriz de cores. Essa 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 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.
A ilustração a seguir mostra a imagem original à esquerda e a imagem transformada à direita.
O código no exemplo a seguir usa as seguintes etapas para recolorir:
Inicializar um ColorMatrix objeto .
Create um ImageAttributes objeto e passe o ColorMatrix objeto para o SetColorMatrix método do ImageAttributes objeto .
Passe o ImageAttributes objeto para o DrawImage método de um Graphics objeto .
O exemplo anterior foi projetado para uso com Windows Forms e requer PaintEventArgse
, que é um parâmetro do Paint manipulador 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)
Comentários
Os coeficientes de matriz constituem uma transformação linear de 5 x 5 que é usada para transformar valores homogêneos ARGB. Por exemplo, um vetor ARGB é representado como vermelho, verde, azul, alfa e w, em que w é sempre 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:
Duplicar o componente vermelho
Adicionar 0,2 aos componentes vermelhos, verdes e azuis
A multiplicação de matriz a seguir executará o par de transformações na ordem listada.
Os elementos de uma matriz de cores são indexados (baseados em zero) por linha e coluna. Por exemplo, a entrada na quinta linha e na terceira coluna da matriz M é indicada por 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. Se você multiplicar um vetor de cor pela matriz de identidade, o vetor de cor não mudará. 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.
Para uma discussão mais detalhada de matrizes e transformações, consulte Sistemas de coordenadas e transformações.
Construtores
ColorMatrix() |
Inicializa uma nova instância da classe ColorMatrix. |
ColorMatrix(ReadOnlySpan<Single>) |
Define uma matriz 5x5 que contém as coordenadas para o espaço RGBAW. Vários métodos da classe ImageAttributes ajustam as cores da imagem usando uma matriz de cores. Essa classe não pode ser herdada. |
ColorMatrix(Single[][]) |
Inicializa uma nova instância da classe ColorMatrix usando os elementos na matriz |
Propriedades
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 deste ColorMatrix. |
Matrix01 |
Obtém ou define o elemento na linha 0 (zero) e na primeira coluna deste ColorMatrix. |
Matrix02 |
Obtém ou define o elemento na linha 0 (zero) e na segunda coluna deste ColorMatrix. |
Matrix03 |
Obtém ou define o elemento na linha 0 (zero) e na terceira coluna deste ColorMatrix. Representa o componente alfa. |
Matrix04 |
Obtém ou define o elemento na linha 0 (zero) e na quarta coluna deste 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 na terceira coluna deste ColorMatrix. Representa o componente alfa. |
Matrix14 |
Obtém ou define o elemento na primeira linha e na quarta coluna deste ColorMatrix. |
Matrix20 |
Obtém ou define o elemento na segunda linha e na coluna 0 (zero) deste 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 na segunda coluna deste ColorMatrix. |
Matrix23 |
Obtém ou define o elemento na segunda linha e na terceira coluna deste ColorMatrix. |
Matrix24 |
Obtém ou define o elemento na segunda linha e na quarta coluna deste ColorMatrix. |
Matrix30 |
Obtém ou define o elemento na terceira linha e na coluna 0 (zero) deste 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 na segunda coluna deste ColorMatrix. |
Matrix33 |
Obtém ou define o elemento na terceira linha e na terceira coluna deste ColorMatrix. Representa o componente alfa. |
Matrix34 |
Obtém ou define o elemento na terceira linha e na quarta coluna deste ColorMatrix. |
Matrix40 |
Obtém ou define o elemento na quarta linha e na coluna 0 (zero) deste 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 na segunda coluna deste ColorMatrix. |
Matrix43 |
Obtém ou define o elemento na quarta linha e na terceira coluna deste ColorMatrix. Representa o componente alfa. |
Matrix44 |
Obtém ou define o elemento na quarta linha e na quarta coluna deste ColorMatrix. |
Métodos
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
Aplica-se a
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de