Para desenhar uma imagem com transparência em GDI+ é necessário aplicar uma transformação de cor. Normalmente, é usado o seguinte código para uma imagem simples:
private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawImage(Properties.Resources.image0, new Point(0, 0));
}
Vamos agora criar a transformação de cor. Para isso, usamos a classe ColorMatrix e a classe ImageAttributes. A classe ColorMatrix é composta por uma matriz 4×4 com valores nos quais colocamos as transformações de cor e transparência. Não precisamos nos preocupar com a declaração completa da classe, vamos apenas usar o construtor padrão e alterar o valor de transparência, dessa forma:
ColorMatrix colorMatrix = new ColorMatrix(); colorMatrix.Matrix33 = 0.5f;
O atributo Matrix33 permite alterar a transparência de toda a imagem. Os valores aceitáveis vão de 0.0f (transparente) até 1.0f (opaco). O código completo para desenhar com transparência fica assim:
ColorMatrix colorMatrix = new ColorMatrix(); colorMatrix.Matrix33 = 0.5f; ImageAttributes imgAttributes = new ImageAttributes(); imgAttributes.SetColorMatrix(colorMatrix); g.DrawImage( Properties.Resources.stay, new Rectangle(new Point(0, 0), Properties.Resources.stay.Size), 0, 0, Properties.Resources.stay.Width, Properties.Resources.stay.Height, GraphicsUnit.Pixel, imgAttributes);