VB图像处理多次undo如何实现

来源:互联网 发布:淘宝头条写手兼职 编辑:程序博客网 时间:2024/05/18 15:53

做毕业论文的时候遇到的一个问题,请教豆瓣上的网友才有了答案。谢谢这位叫“异彩”的朋友。拿出来与大家分享。

 

 

  用VB做图像处理软件的毕业论文,遇到一个问题。加载一幅图片,用多个滤镜分别处理,想一步一步UNDO到最原始的图像,多次UNDO怎么实现?

 

 

参考方案:

 

如果想做到多次UNDO的话, 无疑是需要记录操作的每次步骤. 具体有两种形式:
  
  1, 在程序内存中存贮:
   在程序中建立栈(不知道你学过没学过栈, 如果没有的话可直接理解为数组), 栈满足了后进先出(LIFO)的的规则.
   在每次进行对图像的操作时, 都将上一幅图像备份(注意是深层备份, 如果是浅表引用的话是起不到效果的)到到这个栈中. 这样, 当执行UNDO, 就可以从栈里面提取一个上一次保存的图像, 替代当前图像(并删除这个备份), 知道这个栈为空. 实现了多次UNDO.
   这种方法的特点是处理数度比较快, 但是也非常消耗内存.
  
  2. 在文件中存储:
   同样是备份每个操作前的图像,但这次是存储到硬盘上, 这需要你以一定的文件名规范(xxx_temp_1.jpg, xxx_temp_2.jpg依次等等)去防止重名的情况. 同样在UNDO的时候, 去加载上一个编号的文件, 并删除之, 这样也实现了多次UNDO.
  
   这种方法的特点自然是消耗内存少, 但是undo的处理速度没有前者快.
  
  3. 两种方法结合.
   ...
  
 

原创粉丝点击