我有一个小小的启动窗口:
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中执行此操作?如果是这样,怎么样?
答案 0 :(得分:1)
可以使用WS_EX_LAYERED完成,但需要一些努力和一些P / Invoke:http://msdn.microsoft.com/en-us/library/ms997507.aspx
此处还有一篇较旧的文章,但不知道它是否仍然有效:http://www.codeproject.com/KB/cs/transparentwindowsincsharp.aspx