Partilhar via


Como: Converter as cores da 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 são fornecidas na tabela a seguir.

Componente a ser traduzido.

Entrada de matriz

Vermelho

[4][0]

Verde

[4][1]

Azul

[4][2]

Alpha

[4][3]

Exemplo

O exemplo seguinte constrói uma Image o 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 é desenhada juntamente com a imagem transformada.

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

Converter cores

A tabela a seguir lista os vetores de cor para as quatro barras antes e após a tradução de vermelha. Observe que, como o valor máximo para um componente de cor é 1, o componente vermelho na segunda linha não alterar. (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)

Vermelho (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

O exemplo anterior é projetado para uso com o Windows Forms e requer PaintEventArgs e, que é um parâmetro da Paint manipulador de eventos. Substitua ColorBars.bmp com um nome de arquivo de imagem e o caminho que são válidos no sistema.

Consulte também

Referência

ColorMatrix

ImageAttributes

Outros recursos

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

Recolorir imagens