赢取Xp,winform渐变背景上的透明标签不起作用

时间:2013-07-10 15:41:28

标签: c# winforms transparency

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

在Windows 7上:

Windows 7 Display

在Windows XP上:

Windows XP Display

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

0 个答案:

没有答案