【问题标题】:How to use 32bit alpha-blended BMP in .Net如何在 .Net 中使用 32 位 alpha 混合 BMP
【发布时间】:2010-09-07 16:15:14
【问题描述】:

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

【问题讨论】:

    标签: c# .net alpha blending


    【解决方案1】:

    你需要做两件事:

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

    代码有点庞大,但这里有一个非常不错的示例应用程序的源代码:Per Pixel Alpha Blend in C#

    【讨论】:

      【解决方案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 文件。

      【讨论】:

      • 山姆是正确的。 BMP 不支持 Alpha 通道。位图中的透明度通常通过色度键方式完成(选择一种颜色为 100% 透明)。 PNG 将是这里的最佳选择。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-22
        • 1970-01-01
        • 1970-01-01
        • 2010-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多