求助:图形CAD系统中的Undo和Redo功能怎样实现? 现正在编一图形CAD系统,其中一部分功能是绘制各种图元,例如圆,弧,五角星等,各种图元数据(即能决定该图元点的坐标)存储在其相应的数组(一种图元一个数组)中,问怎样实现系统的Undo、Redo功能?方法越简便越好,希望各位不吝赐教,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.programfan.com/showarticle.asp?id=774 参考:http://www.codeproject.com/docview/undo.asphttp://www.codeproject.com/docview/undoredo_demo.asp to:hushuangyan74() 用堆栈的话,可否给一些思路。我程序里的存储结构比较凌乱。对一种图元来说,用一个数组存储它的关键点,另一个数组存储它的曲线段。这两个数组均放在Doc类里。to:kingzai(stevenzhu) 那网页里的方法是首先建立一个基类CEditRecord,对于每一种操作,都从该基类上派生出与操作相对应的类,记载操作过程,供以后进行具体的Undo/Redo操作。在我的程序里,我先建了个操作基类,对于每种图元都建了一个操作子类,例如绘制,删除,移动等。如果要加入Undo的话,则每种图元的Undo方法都不一样,那太麻烦了。我想的是对于任何图元都用一种方法来解决,不知道可不可以。关于vcleaner(我没做大哥已经很久了.......)的第一个链接里的Cundo类,不知大家有没有人用过?我放到我的工程里总会出错。如果有人用过,请赐教。to :pknife(小李飞刀) 那本书,我正在找。呵呵,谢谢。 同上,使用Command 模式 既可。将每一个操作都抽象为一个Command对象 英文名:《Design Patterns》中文名:《设计模式可复用面向对象软件的基础》的书中有详细讲解 http://www.codeproject.com/docview/undoredo_demo.asp参考《设计模式可复用面向对象软件的基础> ADO怎么获取表中主键的字段名称 很奇怪的编译错误,高手来啊。。。 Debug与Release 用好google,搜索你想要的资源 如何在单文档程序的标题栏产生两个按扭? 在属性页中使用listbox控件但在各个属性页中切换画面时闪烁的问题! postmessage的第一个参数的句柄如何那到 高分求教MFC线程问题,急! 天网里显示有人想用PING来探测本机,是什么意思啊? 2000SERVER,我的电脑很奇怪,桌面的图片,和打开文件的时候的,文件 我设计了一个socket传输大文件的模型,请大家帮我看看 MoveWindow的一个问题
http://www.codeproject.com/docview/undo.asp
http://www.codeproject.com/docview/undoredo_demo.asp
用堆栈的话,可否给一些思路。我程序里的存储结构比较凌乱。对一种图元来说,用一个数组存储它的关键点,另一个数组存储它的曲线段。这两个数组均放在Doc类里。to:kingzai(stevenzhu)
那网页里的方法是首先建立一个基类CEditRecord,对于每一种操作,都从该基类上派生出与操作相对应的类,记载操作过程,供以后进行具体的Undo/Redo操作。在我的程序里,我先建了个操作基类,对于每种图元都建了一个操作子类,例如绘制,删除,移动等。如果要加入Undo的话,则每种图元的Undo方法都不一样,那太麻烦了。我想的是对于任何图元都用一种方法来解决,不知道可不可以。关于vcleaner(我没做大哥已经很久了.......)的第一个链接里的Cundo类,不知大家有没有人用过?我放到我的工程里总会出错。如果有人用过,请赐教。to :pknife(小李飞刀)
那本书,我正在找。呵呵,谢谢。
将每一个操作都抽象为一个Command对象
中文名:《设计模式可复用面向对象软件的基础》的书中有详细讲解
参考《设计模式可复用面向对象软件的基础>