我在做一个简单的画图程序,要做撤消这个操作,感觉有些迷茫。希望大家推荐相关文章。
另外,碰到其中一个问题就是有些操作实际上没改变图像,如何判断使这些操作不会被加入到撤消数组中?

解决方案 »

  1.   

    一个最简单的方法就是在做操作之前把当前的图片缓存一张,当要撤销的时候就把缓存的再显示出来,这样操作简单但是就是占用内存大,最多撤销多少步就要缓存多少张。再有就是逆操作,这样就是操作复杂,需要能精确定义每个操作的逆操作,比如说一张图片+另一张图片,逆操作就是所得图片-另一张图片,这样虽然内存消耗少但是实现复杂,而且占用CPU高,而且每个操作都必须有精确的逆操作定义。像PhotoShop应该是两种方法混用的,因为确实有操作无法实现逆反的,这种情况就需要缓存