XP 中的 C# 透明度

发布于 2024-11-08 00:30:35 字数 656 浏览 0 评论 0原文

我有一个小启动窗口:

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 中实现吗?如果是这样,怎么办?

I have a little splash window:

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 is a PNG with alpha, and displays beautifully on my Windows 7 development computer.

On the Windows XP target computers, however, there is no transparency; instead, the background of the image is black.

I know it's possible to display a transparent splash window in XP because I have seen it before. Is it possible to do it in .net? If so, how?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

琉璃梦幻 2024-11-15 00:30:35

它可以通过 WS_EX_LAYERED 完成,但需要一些努力和一些 P/Invoke:http://msdn.microsoft.com/en-us/library/ms997507.aspx" rel="nofollow">http:// /msdn.microsoft.com/en-us/library/ms997507.aspx

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

It can be done with WS_EX_LAYERED but requires some efforts and some P/Invoke: http://msdn.microsoft.com/en-us/library/ms997507.aspx

Also there is an older article here but don't know if it's still valid: http://www.codeproject.com/KB/cs/transparentwindowsincsharp.aspx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文