我的问题是这样的,我写的OnPaint()
    private void Form1_Paint(object sender, PaintEventArgs e)
        {                  Invalidate();
        }
  我写的是想画图板一样的程序。这个Paint方法在画图是还可以了,不错。  但是,问题是,在调用别用,入MessageBox.Show("关闭吗?");
  这是程序比较慢。我跟踪程序了,看出来是因为执行了这个Invalidate();,所以一直在不出来。不知道怎么样使用这个方法啊?
请指教。

解决方案 »

  1.   

    你这样会造成CPU占用很高吧因为是循环调用,Invalidate会造成Paint事件。而Paint事件里面你又调Invalidate
      

  2.   

    Invalidate(); 就是调用重绘的也就是你这里面的OnPaint(),你这样来回不断的反复重绘肯定会导致程序比较慢,不要把Invalidate();放在OnPaint()中
      

  3.   

    那我怎么办了?刚才看了确实的,cpu占用率非常高?我真以前从没有关注过这个。但是,那我以前的那个问题怎么办了?我不用这个方法了,那用什么方法,一直的刷新界面?   因为要像画图板那样,鼠标动的时候画出一天线来。
      

  4.   

    好像还是有问题啊?我是捕捉了鼠标的move事件,但是如果画在画布上的话,就会不显示了。不知道是什么原因?进一步求解。
      

  5.   

    在move事件事件处理代码中,调用Invalidate(); 
      

  6.   

    在move事件中处理变量,并最后执行Form1.Refresh()应该就可以刷新而在OnPaint根据move事件中的变量值,做相应的画图操作这样应该就可以实现画图功能了