关于图形编辑软件undo与redo的编程实现(用c++builder或delphi如何编程 ???)(200分)

  • 主题发起人 主题发起人 happymanfreeman
  • 开始时间 开始时间
H

happymanfreeman

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手: 大家好!
几乎所有的图形编辑软件都有undo与redo操作, 用c++builder或delphi如何
高效地编程实现 ?? 高效地全程操作如何编程 ?? 听说与command 模式和堆栈
有关. 具体如何编程呢 ??

请教具体编程思路, 请给出代码, 最好提供针对性的c++builder或delphi
完整例子. 谢谢 !!
注: 如果大家引用别人的帖子太长, 请只给出URL, 不要把帖子内容直接帖上,
以免影响大家阅读, 谢谢合作 !!
 
o,又是你, 看来你对图形编程又兴趣, 这很好, 要努力哦;
redo/undo的确是个问题, 但也不是不可实现的;
原理很简单:
要记住你刚才做过的事情(或者要记住你以前做过的任何事情),包括相关数据;
redo/undo就比较容易完成了;
当然这是有代价的, 而且编程的工作量也不小;
 
1、很easy,就是数据保存、读取的实现,利用stream做
2、记录功能,这个麻烦
 
用一个List记录每次操作之前的某对象的状态。
如: 你要拖动一个图形到某个位置, 记录拖动之前状态,并装入list。 undo也不是无限次的, 你可以设定默认50次, 到这个次数了就删除最早的那次。 执行undo时, 只好载入list中最末尾的那次状态就可以了。。 如果没有redo功能可以将它删除。
 
有现成的工程例子(BCB或delphi) ??
 
csi_zf和各位高手: 大家好!
能否提供现成的工程例子(BCB或delphi) ??
 
后退
顶部