Compartilhar via


Como: Converter cores de imagem

Uma tradução adiciona um valor a um ou mais dos componentes de quatro cores.As entradas de matriz de cores que representam as traduções recebem a tabela a seguir.

Componente a ser traduzido

Matriz de entrada

Vermelho

[4][0]

Verde

[4][1]

Azul

[4][2]

Alfa

[4][3]

Exemplo

O exemplo seguinte constrói um Image objeto do arquivo ColorBars.bmp. Em seguida, o código adiciona 0,75 para o componente vermelho de cada pixel na imagem.A imagem original será desenhada juntamente com a imagem transformada.

A ilustração a seguir mostra a imagem original à esquerda e a imagem transformada no lado direito.

A tabela a seguir lista os vetores de cor para as quatro barras antes e após a conversão de vermelha.Observe que o valor máximo para um componente de cor é 1, o componente vermelho da segunda linha não altera.(Da mesma forma, o valor mínimo para um componente de cor é 0.)

Original

Traduzido

Preto (0, 0, 0, 1)

(0.75, 0, 0, 1)

Red (1, 0, 0, 1)

(1, 0, 0, 1)

Verde (0, 1, 0, 1)

(0.75, 1, 0, 1)

Azul (0, 0, 1, 1)

(0.75, 0, 1, 1)

Dim image As New Bitmap("ColorBars.bmp")
Dim imageAttributes As New ImageAttributes()
Dim width As Integer = image.Width
Dim height As Integer = image.Height

Dim colorMatrixElements As Single()() = { _
   New Single() {1, 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.75F, 0, 0, 0, 1}}

Dim colorMatrix As New ColorMatrix(colorMatrixElements)

imageAttributes.SetColorMatrix( _
   colorMatrix, _
   ColorMatrixFlag.Default, _
   ColorAdjustType.Bitmap)

e.Graphics.DrawImage(image, 10, 10, width, height)

' Pass in the destination rectangle (2nd argument), the upper-left corner 
' (3rd and 4th arguments), width (5th argument),  and height (6th 
' argument) of the source rectangle.
e.Graphics.DrawImage( _
   image, _
   New Rectangle(150, 10, width, height), _
   0, 0, _
   width, _
   height, _
   GraphicsUnit.Pixel, _
   imageAttributes)

Image image = new Bitmap("ColorBars.bmp");
ImageAttributes imageAttributes = new ImageAttributes();
int width = image.Width;
int height = image.Height;

float[][] colorMatrixElements = { 
   new float[] {1,  0,  0,  0, 0},
   new float[] {0,  1,  0,  0, 0},
   new float[] {0,  0,  1,  0, 0},
   new float[] {0,  0,  0,  1, 0},
   new float[] {.75f, 0, 0, 0, 1}};

ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements);

imageAttributes.SetColorMatrix(
   colorMatrix,
   ColorMatrixFlag.Default,
   ColorAdjustType.Bitmap);

e.Graphics.DrawImage(image, 10, 10, width, height);

e.Graphics.DrawImage(
   image,
   new Rectangle(150, 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);

Compilando o código

The preceding example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler.Substituir ColorBars.bmp com um nome de arquivo de imagem e caminho válido no seu sistema.

Consulte também

Referência

ColorMatrix

ImageAttributes

Outros recursos

Elementos gráficos e desenho em formulários do Windows

Recolorir imagens