Como: Desenhar com pincéis opacos e semitransparentes
Ao preencher uma forma, você deve passar um objeto Brush para um dos métodos de preenchimento da classe Graphics. O único parâmetro do construtor SolidBrush é um objeto Color. Para preencher uma forma opaca, defina o componente alfa da cor como 255. Para preencher uma forma semitransparente, defina o componente alfa para qualquer valor de 1 a 254.
Quando você preenche uma forma semitransparente, a cor da forma é misturada com as cores do plano de fundo. O componente alfa especifica como as cores da forma e do 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 forma.
Exemplo
O exemplo seguinte desenha um bitmap e depois preenche três elipses que se sobrepõem ao bitmap. A primeira elipse usa um componente alfa de 255, por isso é opaca. A segunda e terceira elipses usam um componente alfa de 128, por isso são semitransparentes; Você pode ver a imagem de fundo através das elipses. A chamada que define a propriedade CompositingQuality provoca que a mistura para a terceira elipse seja realizada em conjunto com a correção de gama.
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);
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)
A ilustração a seguir mostra a saída do seguinte código:
Compilando o código
O exemplo anterior foi projetado para uso com o Windows Forms e requer PaintEventArgse
, que é um parâmetro de PaintEventHandler.
Ver também
.NET Desktop feedback