windows里面自带的画图小程序,有撒消操作,在编辑菜单中,不知道大家有没有看到。它最多可以撒消前三步的操作,请问这个功能是怎么样实现的。
如果有谁做过相关的,可以给个思路吗。我只要思路,不需要程序代码的,这样大家都可以发言了,觉得有道理的都可以给分。

解决方案 »

  1.   

    运用的Command设计模式
    首先把操作记录到一个数据对象中
    然后再从数据对象进行redo
    有空看看设计模式的Command
      

  2.   

    我思路是这样的:用一个TList存放五个位图对象,然后每一次都是像队列一样五个更换图象,一个新的进来,最老的就删去,然后恢复就是把最新的取出来用,同时把它从TList中除去。有谁提出更好的思路,上面说的都很抽象,没有就具体问题来讨论: guge(天使在唱歌~~) :这个你要先写个备份函数,把上一部操作记录下来,要撤消就恢复到前一个状态
    re:你会不会自己都觉得好抽象,请问这个备份函数怎么写,怎么记录下来,怎么恢复过去。
      这些你想清楚了没有?fjb5926(樱木花道) 是不是可以按照文本文件中的撤消操作一样的处理方式呢?
    re:那是什么方式呢,你知道他内部是怎么实现的吗?Zsyzk(浪子)说得更是抽象,让人无法理解,不是每一样东西都要什么设计模式的,你想以前没有设计模式的时候,人们是怎么样完成那些软件,何况这么一个小软件。 keyz(keyz):如果是可恢复的操作,把操作过程放到栈中(比如颠倒图片),不可以恢复的操作(比如二值化),把原始图片放到栈中。回退的时候从栈中取出。
    re:这是我看到的最好的回答了,和我的思路有些相似,可见是经过思考的。你已经得了一大半的分了。不知道下面还有没有更好的回答呢?
      

  3.   

    http://community.csdn.net/Expert/topic/3016/3016940.xml?temp=.7669336