2

对于我的应用程序,我正在制作类似警报的“Toast”。我在表单“Paint”事件上使用覆盖方法来创建自定义渐变。然后表单有一个图片框,上面有 3 个标签,所有标签都具有透明背景。在 XP 上,这些控件的背景被设置为表单的原始背景颜色,并且不显示图像/文本。

在 Windows 7 上:

Windows 7 显示

在 Windows XP 上:

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()”,这样就解决了问题!

4

0 回答 0