你把OnPaint()里的内容写到另一个函数里,比如DoPaint()函数,重写OnPaint()为
protected override OnPaint()
{
    DoPaint();
}在鼠标点击事件里,也同样写,就可以了

解决方案 »

  1.   

    protected virtual void OnMouseUp(MouseEventArgs e)
    {
        Invalidate();
    }protected virtual void OnPaintBackground(PaintEventArgs e )
    {
        Graphics g = e.Graphics;
    }
      

  2.   

    protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e) 
    {
       //给出你的鼠标处理函数
        Invalidate();
    }
    应该就可以了
      

  3.   

    protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e) 
    {
       //给出你的鼠标处理函数
        Invalidate(Rectangle);//最好制定需要重画的部分,这样开销小一点}
      

  4.   

    protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e) 
    {
       //给出你的鼠标处理函数
        Invalidate(Rectangle);//最好制定需要重画的部分,这样开销小一点}
     
    我就遇到过Invalidate()没有效果的例子,我做流程图时还有效,一样的代码在另一个游戏中就无效了,后来在后面干脆加上:this.Refresh();
    或是
    this.Update();
      

  5.   

    请问这个Invalidate()是重画原来的图形么?我是要实现点击鼠标后,实现图形的放大操作。后来画的图形是放大后的图形。请恕本人愚顿,能否详细点?非常非常感谢,本来已经不抱希望了。没想到还有人回复,真的很感谢!
      

  6.   

    我试过了,Invalidate()是在原图上基础上画么?我想用新图替代原图,怎么让原图消失呢?非常感谢!