对于我的应用程序我正在制作像警报一样的“Toast”。我在窗体“Paint”事件上使用覆盖方法来创建自定义渐变。然后表单上有一个图片框,上面有3个标签,所有标签都带有透明背景。在XP上,这些控件的背景被设置为表单的原始背景颜色,并且图像/文本没有显示。
在Windows 7上:
在Windows XP上:
My Paint方法:
private void AlertForm_Paint(object sender, PaintEventArgs e)
{
using (LinearGradientBrush brush = new LinearGradientBrush(
this.ClientRectangle,
Color.Black,
Color.DimGray,
120F))
{
e.Graphics.FillRectangle(brush, this.ClientRectangle);
}
}
有人有任何建议来解决Windows XP上的问题吗?
更新:以下是我的表单的源代码,减去设计代码:http://pastebin.com/RUYtM7qu
修复:我发现问题是由于表单的动画造成的。如果我只是显示表单,它显示正常,但一旦我移动它,文本和图标消失。我决定注册“LocationChanged”事件,并在表单上手动调用this.Refresh()“,这就解决了问题!