Como: Desenhar com pincéis opacos e semitransparentes

Quando você preenche uma forma, você deve passar um Brush um dos métodos de preenchimento do objeto de Graphics classe. Um parâmetro da SolidBrush construtor é um Color objeto. Para preencher uma forma opaca, defina o componente alfa da cor a 255. Para preencher uma forma semitransparente, defina o componente alfa para qualquer valor de 1 a 254.

Ao preencher uma forma semitransparente, a cor da forma é combinada com as cores do plano de fundo. O componente alfa que especifica como as cores de plano de fundo e forma são misturadas; os valores alfa perto de 0 coloque mais peso as cores de plano de fundo e valores alfa perto 255 colocar mais peso a cor da forma.

Exemplo

O exemplo a seguir desenha um bitmap e, em seguida, preenche três ellipses sobreponham o bitmap. A primeira elipse usa um componente alfa de 255, portanto é opaco. As segunda e terceira elipses usam um componente de alfa de 128, para que sejam semitransparente; Você pode ver a imagem de plano de fundo por reticências. A chamada que define o CompositingQuality propriedade faz com que a mistura para a terceira elipse 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, 50, 50, bitmap.Width, bitmap.Height)

        Dim opaqueBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 255))
        Dim semiTransBrush As New SolidBrush(Color.FromArgb(128, 0, 0, 255))

        e.Graphics.FillEllipse(opaqueBrush, 35, 45, 45, 30)
        e.Graphics.FillEllipse(semiTransBrush, 86, 45, 45, 30)

        e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected
        e.Graphics.FillEllipse(semiTransBrush, 40, 90, 86, 30)

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

SolidBrush opaqueBrush = new SolidBrush(Color.FromArgb(255, 0, 0, 255));
SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(128, 0, 0, 255));

e.Graphics.FillEllipse(opaqueBrush, 35, 45, 45, 30);
e.Graphics.FillEllipse(semiTransBrush, 86, 45, 45, 30);

e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected;
e.Graphics.FillEllipse(semiTransBrush, 40, 90, 86, 30);

Compilando o código

O exemplo anterior é projetado para uso com o Windows Forms e requer PaintEventArgs e, que é um parâmetro de PaintEventHandler.

Consulte também

Tarefas

Como: Dê a seu controle um fundo transparente

Como: Desenhar linhas opacas e semitransparentes

Como: Criar formulários do Windows transparentes

Outros recursos

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

Preenchimentos e linhas de mistura alfa