对于我的应用程序,我正在制作类似警报的“Toast”。我在表单“Paint”事件上使用覆盖方法来创建自定义渐变。然后表单有一个图片框,上面有 3 个标签,所有标签都具有透明背景。在 XP 上,这些控件的背景被设置为表单的原始背景颜色,并且不显示图像/文本。
在 Windows 7 上:
在 Windows XP 上:
我的绘画方法:
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()”,这样就解决了问题!