Como: Desenhar linhas opacas e semitransparentes

Quando você desenha uma linha, você deve passar um Pen o objeto para o DrawLine método o Graphics classe. Um dos parâmetros da Pen construtor é um Color objeto. Para desenhar uma linha opaca, defina o componente alfa da cor a 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 é combinada com as cores do plano de fundo. O componente alfa que especifica como as cores de linha e de plano de fundo são misturadas; os valores alfa perto 0 coloque peso mais as cores de plano de fundo e valores alfa perto 255 colocar mais peso na cor de linha.

Exemplo

O exemplo a seguir desenha um bitmap e, em seguida, desenha três linhas, usam o bitmap como plano de fundo. A primeira linha usa um componente alfa de 255, portanto é opaco. A segunda e terceira linhas para usar um componente alfa de 128, para que sejam semitransparente; Você pode ver a imagem de plano de fundo por linhas. A instrução que define o CompositingQuality propriedade faz com que a mistura para a terceira linha a ser feito em conjunto com a correção de gama.

A ilustração a seguir mostra a saída de código a seguir.

Opaco e semitransparente

        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)

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);

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.

Consulte também

Tarefas

Como: Dê a seu controle um fundo transparente

Como: Criar formulários do Windows transparentes

Como: Desenhar com pincéis opacos e semitransparentes

Outros recursos

Preenchimentos e linhas de mistura alfa