XP 中的 C# 透明度

本文关键字:透明度 中的 XP | 更新日期: 2023-09-27 17:56:47

我有一个小的启动窗口:

public partial class Splash : Form
{
  bool painted = false;
  public Splash()
  {
    InitializeComponent();
  }
  protected override void OnPaint(PaintEventArgs e)
  {
    //
  }
  protected override void OnPaintBackground(PaintEventArgs e)
  {
    if (painted)
        return;
    Graphics gfx = e.Graphics;
    gfx.DrawImage(Properties.Resources.Splash, ClientRectangle);
    painted = true;
  }
}

Properties.Resources.Splash是一个带有alpha的PNG,在我的Windows 7开发计算机上显示得很漂亮。

但是,在Windows XP目标计算机上,没有透明度;相反,图像的背景是黑色的。

我知道可以在XP中显示透明的启动窗口,因为我以前见过它。是否可以在 .net 中执行此操作?如果是这样,如何?

XP 中的 C# 透明度

它可以用WS_EX_LAYERED来完成,但需要一些努力和一些 P/Invoke: http://msdn.microsoft.com/en-us/library/ms997507.aspx

这里还有一篇较旧的文章,但不知道它是否仍然有效:http://www.codeproject.com/KB/cs/transparentwindowsincsharp.aspx