Display PNG with alpha channel in C#

rafalry picture rafalry · Jun 24, 2010 · Viewed 10.8k times · Source

Is there a way to properly display an image with alpha channel (let's say PNG) in C# application? Thank you for any suggestions.

UPDATE:

OK, my question was a bit unprecise. I'd like to acquire real transparency of alpha channel - not filling with the parent's background color. In the image below we can see that the transparency is supported, but the part of the button that lies below the image is not visible. Is it possible to have a real transparency of the alpha channel of an image?

image presenting not-total transparency

Answer

Kristoffer Schroeder picture Kristoffer Schroeder · Jun 24, 2010

If that is winforms then no. "transparency" in winforms is not real transparency.

What you can do is to create a alphatransparent form that draws the PNG and position it at the correct location and bind move etc. alt text http://www.codeproject.com/KB/GDI-plus/perpxalpha_sharp.aspx

PerPixelAlphaForm transparentImageForm = new PerPixelAlphaForm();
transparentImageForm.SetBitmap(<IMAGE GOES HERE>,<OPACITY GOES HERE>);

//opacity is the opacity that the image will be drawn with, a value of 255 = all transparent parts will be alpha/transparent just as much as the original PNG etc..

EDIT: OR GO TO WPF.