C # Прозрачность в XP - PullRequest
       26

C # Прозрачность в XP

2 голосов
/ 19 мая 2011

У меня есть небольшое всплеск окна:

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 - это PNG с альфа-каналом, который прекрасно отображается на моем компьютере для разработки под Windows 7.

На целевых компьютерах с Windows XP прозрачность отсутствует; вместо этого фон изображения черный.

Я знаю, что в XP можно отобразить прозрачное окно-заставку, потому что я видел его раньше. Возможно ли это сделать в .net? Если да, то как?

1 Ответ

1 голос
/ 19 мая 2011

Это можно сделать с помощью WS_EX_LAYERED, но требует некоторых усилий и некоторого P / Invoke: http://msdn.microsoft.com/en-us/library/ms997507.aspx

Также здесь есть более старая статья, но она не знает, действительна ли она: http://www.codeproject.com/KB/cs/transparentwindowsincsharp.aspx

...