private void timer2_Tick(object sender, EventArgs e)
        {
            Invalidate();
        }  
GDI+ 时钟一直在闪烁
怎么才能使 GDI+ 绘制的时钟看起来不闪烁????

解决方案 »

  1.   

    这样是强制整个窗体无效了,窗体上所有控件都要重绘。
    可以控制让时钟控件无效(比如让时钟所属的容器无效),
    或者在窗体Paint时判断无效区,针对性地绘制。对时钟这样频繁重绘的区域,还可以采用双缓冲机制绘制时钟。
      

  2.   

    其实前面的回复已经告诉你该怎么做了。Invalidate();相当于this.Invalidate();
    看你的情况,this应该是窗体对象了,
    这样当然是强制整个窗体无效。不知道你的时钟是怎么实现的,如果是自定义控件,调用该控件的Invalidate();
    可以强制控件重绘。如果不是独立的控件,可以在一Panel控件上绘制时钟,
    只要定时调用Panel的Invalidate();也一样。如果局部重绘还不能解决闪烁的问题,
    可以用双缓冲绘制时钟
      

  3.   

    在哪画的始终,就执行谁的Invalidate,另外开启他的双缓冲
      

  4.   

    在pictureBox 上画的,已经实现了,
    怎么开启双缓冲呢?
      

  5.   

    http://blog.163.com/gukai_91/blog/static/11170448620093235651242/