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

时间:2008-09-03 12:00:26

标签: c# .net alpha blending

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

3 个答案:

答案 0 :(得分:3)

你需要做两件事:

  • 将您的位图复制到表单上作为背景。
  • 调用 UpdateLayeredWindow (user32.dll)以启用每像素Alpha透明度。

代码有点笨拙,但这是一个非常好的示例应用程序,包含源代码:Per Pixel Alpha Blend in C#

答案 1 :(得分:2)

PixelFormat枚举列出了您可以在.Net中创建的“位图”格式,因此您需要PixelFormat.Format32bppArgb:

http://msdn.microsoft.com/en-us/library/system.drawing.imaging.pixelformat.aspx

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

但是我不完全确定BMP文件格式支持透明度 - 所以你必须将文件保存为PNG文件。

答案 2 :(得分:2)

虽然BMP格式支持alpha通道,但Windows会忽略它。幸运的是,格式相当简单,您可以使用System.IO.BinaryReader读取它,然后使用LockBits和UnlockBits方法创建一个Drawing.Bitmap,将数据写入其中。