1.想实现回退前进的功能。想法是用命令模式。放一个栈把实现的画图功能都放进去。但如果进行了很多步的话,这样实现会不会效率太低。2.想实现画图的“橡皮筋”功能。(就是鼠标移动时,即时绘制,直到单击确定)。不清楚怎么做。如果每移动一次都重画整个桌布上所有的画图步骤的话,会不会效率太低了。3.确定一个东西。在C#中是不是应该将绘制的东西都放在OnPaint中,这样是不是画布大小改变时,能实现自动的重绘。4.如果有做过类似东西的话,请给个具体实现的思路。我现在的思路是在栈中放绘制过的所有步骤。然后统一绘制。橡皮筋功能,我想临时建立一个控件,在上面实现。然后确定后在绘制到画布上。但不管怎样我都觉得会使得效率过低,希望大家给点意见,谢谢

解决方案 »

  1.   

    我也在做,不是很会。共同学习
    http://dev.csdn.net/article/35/35409.shtm
      

  2.   

    http://www.hky5.com/wswy/index2.asp?tyid=40&ty2id=175&name=C&type2name=图形处理
      

  3.   

    toball(江水流)  能介绍下 或是给点代码看看吗??
      

  4.   

    效率:不会,我试过,可以使用ArrayList
    橡皮线:双缓存技术!
    重绘吗:好象使用了双缓存技术就不会了!
    建立图形的类,使用对象保存图形的信息,然后按照绘制顺序保存在ArrayList中!
    保存文件可以使用序列化!
      

  5.   

    楼上
    恩,双缓冲怎么实现橡皮线?双缓冲是将image在内存中绘制好再绘制到显示器上。那橡皮线需要反复显示怎么解决。
    能给点代码看看吗??
    谢谢。。
      

  6.   


    在你要绘图窗体的构造函数中添加://**** 在缓存区绘制控件,然后再显示出来,可以避免刷新时屏幕的闪烁;
    this.SetStyle(ControlStyles.AllPaintingInWmPaint,true);
    this.SetStyle(ControlStyles.DoubleBuffer,true);
    this.SetStyle(ControlStyles.UserPaint,true);
    //****这样你在你的mousemove函数中该重绘的重绘
    就不会产生屏幕的闪烁!