winform中,用GDI+画的图,当拖动panel1的滚动条的时候,如何让绘制的图形跟着移动,也就是重绘的时候。

解决方案 »

  1.   

    改变下思路, panel1里在嵌入一个panel2,在panel2上绘图,拖动panel1的时候,让panel2跟着移动就可以了~~
      

  2.   

    xxxx.Invalidate();调用绘图控件的重回事件,绘图代码写到Paint事件中,滚动式,调整一些参数,然后xxxx.Invalidate()
      

  3.   

    这样的话,里面的panel2可以通过保存坐标来实现重绘。外面的panel1的重绘事件怎么写呢?
      

  4.   

    就是要避免重绘的发生,类似一张透明的PNG图片,一次绘成后保存为PNG图片丢在image中,移动滚动条的时候,修改image的位置就可以了,复杂绘图你不停的做,当然严重损失性能,让你换个思路也就是这个意思...
      

  5.   

    需要绘制的panel设置双缓存可以解决卡的问题。
    设置方式,自定义个drawpanel,继承自panel,在构造函数中设置doublebuffer=true;
    在自定义的drawpanel的onpaint事件中绘制你的图片。若干年前,用此方法写过绘制200×200色块的程序,拖动色块无卡顿现象。滚动条的出现可以通过设置drawpanel的parent控件属性和drawpanel大小来实现。