如何在.Net中使用32位Alpha混合BMP

时间:2020-03-05 18:46:58  来源:igfitidea点击:

有什么方法可以在.Net(C#)中使用这种格式?
我想使用uTorrent在我的应用程序中使用的相同皮肤格式,但是我无法获得透明背景。
有任何想法吗?
谢谢你的时间。

解决方案

回答

PixelFormat枚举列出了可以在.Net中创建的"位图"的格式,因此我们需要使用PixelFormat.Format32bppArgb:

http://msdn.microsoft.com/zh-CN/library/system.drawing.imaging.pixelformat.aspx

http://msdn.microsoft.com/en-us/library/3z132tat.aspx

但是,我不确定BMP文件格式是否支持透明性,因此我们可能不得不将文件另存为PNG文件。

回答

我们需要做两件事:

  • 将位图复制到窗体上作为背景。
  • 调用UpdateLayeredWindow(user32.dll)以启用每个像素的alpha透明度。

该代码有点笨拙,但这是一个非常不错的示例应用程序,带有源代码:C#中的Per Pixel Alpha Blend