在C#中显示带有alpha通道的PNG

9

有没有一种在C#应用程序中正确显示带alpha通道的图像(比如PNG)的方法?感谢任何建议。

更新:

好的,我的问题有点不太清晰。我想获取alpha通道的真正透明度 - 而不是用父元素的背景颜色填充。在下面的图片中,我们可以看到支持透明度,但是按钮下方的部分不可见。是否有可能实现图像的alpha通道的真正透明度?

image presenting not-total transparency


4
什么类型的应用程序?winform?wpf?html / ASP.NET?html / ASP.NET MVC?silverlight?xna?phone 7?windows mobile?iPhone?手表(微型框架)?gtk#(mono)? - Marc Gravell
2
“improperly display” 是什么样子? - Hans Passant
@Marc Gravell - 这是一个标准的C# Windows窗体应用程序 @Hans Passant - 好提示 - 请查看更新 - rafalry
3个回答

8
如果是winforms,那么不行。在winforms中,“透明度”并非真正的透明度。你可以创建一个alpha透明度的窗体来绘制PNG,然后将其定位到正确的位置并绑定移动等操作。 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是图像绘制时使用的不透明度,值为255表示所有透明部分将与原始PNG等一样具有alpha/透明度。

编辑:或者转向WPF。


3

是的,System.Drawing.Image.FromFile("filename.png"); .NET框架支持多种文件类型的透明度,我认为它不适用于JPEG,但对于PNG应该没有问题。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接