Partilhar via


Como: Desenhar linhas opacas e semitransparentes

Quando você desenha uma linha, você deve passar um objeto Pen para o método DrawLine da classe Graphics. Um dos parâmetros do construtor Pen é um objeto Color. Para desenhar uma linha opaca, defina o componente alfa da cor como 255. Para desenhar uma linha semitransparente, defina o componente alfa para qualquer valor de 1 a 254.

Quando você desenha uma linha semitransparente sobre um plano de fundo, a cor da linha é misturada com as cores do plano de fundo. O componente alfa especifica como as cores de linha e plano de fundo são misturadas; Valores alfa próximos a 0 colocam mais peso nas cores de plano de fundo e valores alfa próximos a 255 colocam mais peso na cor da linha.

Exemplo

O exemplo a seguir desenha um bitmap e, em seguida, desenha três linhas que usam o bitmap como plano de fundo. A primeira linha usa um componente alfa de 255, por isso é opaca. A segunda e terceira linhas usam um componente alfa de 128, por isso são semitransparentes; Você pode ver a imagem de fundo através das linhas. A instrução que define a propriedade CompositingQuality faz com que a mistura para a terceira linha seja feita em conjunto com a correção de gama.

Bitmap bitmap = new Bitmap("Texture1.jpg");
e.Graphics.DrawImage(bitmap, 10, 5, bitmap.Width, bitmap.Height);

Pen opaquePen = new Pen(Color.FromArgb(255, 0, 0, 255), 15);
Pen semiTransPen = new Pen(Color.FromArgb(128, 0, 0, 255), 15);

e.Graphics.DrawLine(opaquePen, 0, 20, 100, 20);
e.Graphics.DrawLine(semiTransPen, 0, 40, 100, 40);

e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected;
e.Graphics.DrawLine(semiTransPen, 0, 60, 100, 60);
Dim bitmap As New Bitmap("Texture1.jpg")
e.Graphics.DrawImage(bitmap, 10, 5, bitmap.Width, bitmap.Height)

Dim opaquePen As New Pen(Color.FromArgb(255, 0, 0, 255), 15)
Dim semiTransPen As New Pen(Color.FromArgb(128, 0, 0, 255), 15)

e.Graphics.DrawLine(opaquePen, 0, 20, 100, 20)
e.Graphics.DrawLine(semiTransPen, 0, 40, 100, 40)

e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected
e.Graphics.DrawLine(semiTransPen, 0, 60, 100, 60)

A ilustração a seguir mostra a saída do seguinte código:

Ilustração que mostra a saída opaca e semitransparente

Compilando o código

O exemplo anterior foi projetado para uso com o Windows Forms e requer PaintEventArgse, que é um parâmetro do manipulador de eventos Paint.

Ver também