我想实现画图功能,要实现删除图形、移动图形、改变图形大小等操作。如何实现撤销和重做的功能,请高手指点迷津,若有例子更好!谢谢!

解决方案 »

  1.   

    codeguru上有介绍:
    http://www.codeguru.com/misc/undo_redo_cdocument.shtml
      

  2.   

    想悔多少步棋就开多少个缓冲区。
    每次把图形copy到一个缓冲区保存后再改写图形。
      

  3.   

    要实现删除图形、移动图形、改变图形大小等操作:那就是用图元方式保存图形了。想要REDO, 就要开一个链表, 每次操作的数据做为一个结点加入链表。
    REDO时, 按照链表中的数据反向操作即可。比如最简单的删除了一个图元, 就将该图元数据存入链表中,
    REDO时, 就将该图元数据加回当前的数据区。
      

  4.   

    msdn 里有DRAWCLI这个例子,好像和你要求的差不多,
      

  5.   

    可以考虑把操作和反操作进行编码,实现反操作。我想,如果PhotoShop向上面一位老兄所说的保存图形,没有哪台机器受得了。