做了一个小练习:form 中有一个panel1 作为画板 当鼠标click画板时就在该位置 draw一个小圆型 ,我的问题是:每当我最小化话窗体在还原时之前画的那些小圆形就都没了,上网查了下有的说要重写
onpaint()什么的,具体代码怎么实现呢怎么?

解决方案 »

  1.   

     protected override void OnPaint(PaintEventArgs e)
            {
                base.OnPaint(e);
                Graphics g = panel1.CreateGraphics();
                //画矩形
                g.DrawRectangle(new Pen(Color.Red,2),new Rectangle(0,0,20,20));
            }
      

  2.   

    楼上的 这个没什么意义啊 你的意思是让我每次点击时都画完再把坐标记录下来么?然后在在这个重写方法里一次性把所有坐标取出来再画一次?不需要这么麻烦吧。再说这个只能解决最小化的问题。比如说我界面上还有一个toolstriptmenu控件我在点击它时出的下拉菜单会挡住 我画的小圈这种情况重写onpaint没用的。
      

  3.   

    你应该画在一个image对象上,而不是直接画在panel上,这样不管你怎么放大缩小都不会消失了。
      

  4.   

    在panel1加一个Paint事件,将画圆的代码放进去就可以了
      

  5.   

    就是要保存下来在Paint里重绘,这是最标准的方法
      

  6.   

    上面方法并不能解决:、比如说我界面上还有一个toolstriptmenu控件我在点击它时出的下拉菜单会挡住 我画的小圈这种情况重写onpaint没用的。下拉框挡住的 图会消失