怎么实现撤销和恢复

zhu_mengyan123456 2010-01-02 06:10:14
用MFC在图形编辑软件中怎么实现撤销和恢复?
...全文
1007 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gamedragon 2010-01-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wqvbjhc 的回复:]
执行反向操作该如何做啊,比如一个中值滤波的反向操作?
[/Quote]
这种破坏性的操作没法反向操作,只能靠保存原来的图像数据来恢复。
tiantangxingkong 2010-01-08
  • 打赏
  • 举报
回复
可以应用序列化方法来将操作保存成文件,撤销重做的时候在依照保存成文件的次序反序列化,目前我的软件中
的撤销重做就是这样做的,因为我的涉及到图像的修改,将图像及图形的操作步骤保存到硬盘上以减少内存开销.
wqvbjhc 2010-01-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yschenwei 的回复:]
建立一个栈,把最近的几部操作都放入栈内。
根据栈顶元素来执行反向操作
[/Quote]
执行反向操作该如何做啊,比如一个中值滤波的反向操作?
wuhuwy 2010-01-03
  • 打赏
  • 举报
回复
用个链表来存储你的每一步操作,需要时提取链表的操作并返回。
  • 打赏
  • 举报
回复
可参考备忘录模式
npuhuxl 2010-01-02
  • 打赏
  • 举报
回复
直接用一个线性表就行,维护一个撤销和重做的位置指针p,0~p是撤销的,p+1~end是重做
sb3day 2010-01-02
  • 打赏
  • 举报
回复
楼上说得对,使用两个栈,一个用来redo,一个用来undo
yschenwei 2010-01-02
  • 打赏
  • 举报
回复
建立一个栈,把最近的几部操作都放入栈内。
根据栈顶元素来执行反向操作。

19,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧