有没有办法在 C# 应用程序中正确显示带有 alpha 通道(比如说 PNG)的图像?感谢您的任何建议。
更新:
好的,我的问题有点不精确。我想获得真正的 alpha 通道透明度 - 不填充父母的背景颜色。在下图中,我们可以看到支持透明度,但位于图像下方的按钮部分不可见。是否可以让图像的 Alpha 通道具有真正的透明度?
有没有办法在 C# 应用程序中正确显示带有 alpha 通道(比如说 PNG)的图像?感谢您的任何建议。
更新:
好的,我的问题有点不精确。我想获得真正的 alpha 通道透明度 - 不填充父母的背景颜色。在下图中,我们可以看到支持透明度,但位于图像下方的按钮部分不可见。是否可以让图像的 Alpha 通道具有真正的透明度?
如果那是winforms那么没有。winforms中的“透明度”并不是真正的透明度。
您可以做的是创建一个 alphatransparent 表单来绘制 PNG 并将其放置在正确的位置并绑定移动等。
http://www.codeproject.com/KB/GDI-plus/perpxalpha_sharp.aspx
PerPixelAlphaForm transparentImageForm = new PerPixelAlphaForm();
transparentImageForm.SetBitmap(<IMAGE GOES HERE>,<OPACITY GOES HERE>);
//opacity 是绘制图像的不透明度,值为 255 = 所有透明部分都将是 alpha/透明的,与原始 PNG 等一样。
编辑:或转到 WPF。
是的,System.Drawing.Image.FromFile("filename.png"); .NET 框架支持多种文件类型的透明度,我认为它不适用于 JPEG,但 PNG 应该没问题。
以下 MSDN 链接将有所帮助:
WPF:http: //msdn.microsoft.com/en-us/library/aa970062.aspx
视窗:http: //msdn.microsoft.com/en-us/library/stf701f5.aspx
关于 System.Drawing.Image.FromFile 方法:
托管 GDI+ 具有支持以下文件类型的内置编码器和解码器:
- BMP
- GIF
- JPEG
- PNG
- TIFF