日期:2014-05-17  浏览次数:20812 次

奇怪的xx
小弟我写了一个小程序,背景加了一个渐变的颜色,像这样子的:


可是我把这个小程序最小化再还原窗口,就变成这样子的:


究其原因,就是如下这段渐变颜色的代码,删掉就不会有问题了:
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Color FColor = Color.AliceBlue;
            Color TColor = Color.BlueViolet;
            Brush b = new LinearGradientBrush(this.ClientRectangle, FColor, TColor, LinearGradientMode.Vertical);
            g.FillRectangle(b, this.ClientRectangle);
        }


可以有改正的办法么?谢谢!
C#?渐变?X C# 渐变? X

------解决方案--------------------
重现不了你这个bug
------解决方案--------------------
GDI+绘制的时候出错了。我试了下你的代码没出现这种情况。帮顶
------解决方案--------------------
你是不是在你的UI上面用了第三方的控件什么的? 有的三方控件可能会出现你这种问题哦
------解决方案--------------------
this.DoubleBuffered = true;
this.ResizeRedraw = false;

------解决方案--------------------
少年 WPF 在等你!!!
------解决方案--------------------
大家都没有遇到这个问题,只有楼主把源码贴上来(整个项目)
------解决方案--------------------
以前在用vs2005 的时候这经常出现。。。
后来实在没有办法,建了个新项目,将代码拷过去,就没了。。。
貌似是窗体重绘的问题。
------解决方案--------------------
我知道了

 try
{
    Graphics g = e.Graphics;
    Color FColor = Color.AliceBlue;
    Color TColor = Color.BlueViolet;
    Brush b = new LinearGradientBrush(this.ClientRectangle, FColor, TColor, LinearGradientMode.Vertical);
    g.FillRectangle(b, this.ClientRectangle);
    b.Dispose();
}
catch
{
    this.Invalidate();
}