易截截图软件、单文件、免安装、纯绿色、仅160KB

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

做毕业论文的时候遇到的一个问题,请教豆瓣上的网友才有了答案。谢谢这位叫“异彩”的朋友。拿出来与大家分享。
  用VB做图像处理软件的毕业论文,遇到一个问题。加载一幅图片,用多个滤镜分别处理,想一步一步UNDO到最原始的图像,多次UNDO怎么实现?
 
 
参考方案:
 
如果想做到多次UNDO的话, 无疑是需要记录操作的每次步骤. 具体有两种形式:
  
  1, 在程序内存中存贮:
   在程序中建立栈(不知道你学过没学过栈, 如果没有的话可直接理解为数组), 栈满足了后进先出(LIFO)的的规则.
   在每次进行对图像的操作时, 都将上一幅图像备份(注意是深层备份, 如果是浅表引用的话是起不到效果的)到到这个栈中. 这样, 当执行UNDO时, 就可以从栈里面提取一个上一次保存的图像, 替代当前图像(并删除这个备份), 知道这个栈为空. 实现了多次UNDO.
   这种方法的特点是处理数度比较快, 但是也非常消耗内存.
  
  2. 在文件中存储:
   同样是备份每个操作前的图像,但这次是存储到硬盘上, 这需要你以一定的文件名规范(xxx_temp_1.jpg, xxx_temp_2.jpg依次等等)去防止重名的情况. 同样在UNDO的时候, 去加载上一个编号的文件, 并删除之, 这样也实现了多次UNDO.
  
   这种方法的特点自然是消耗内存少, 但是undo的处理速度没有前者快.
  
  3. 两种方法结合.
   略...
  
 


相关文档:

vb 连接Access字符串、vb连接Db2的字符串

DB2ConnectionString
b2str = "Provider=MSDASQL.1;Password=a$sk6G7;Persist Security Info=True;User ID=DBA;Data Source=ConDB2SFXXK"
AccessConnectonString
accessstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DMSJK.mdb;Jet OLEDB:database password=" ......

VB读写INI文件

  '******************************************************************************************
'* 需要注意的问题 *
'******************************************************************************************
'1.INI文件的路 ......

VB 线程 真的不行

一开始 以为VB的线程 不是像网上人说的那么脆弱。。。哎 现在领略到了。。。VPrivate Declare Function CreateThread Lib "kernel32" (lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, ByVal lpParameter As Long, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long
Pri ......

VB中获得汉字的首音码(包含二级字库)

Option Explicit
'==================================================
' 函数: ReturnSM
'
' 功能: 返回字符串中没个字符的拼音声母第一个字母
'
' 注意: 该函数只能处理3755个常用汉字(B0 - D7)
' 若超出函数的范围将返回常数 ERR_RESULT$
'
' 入口: Str 待处理的字符串
'
Public Function ReturnSM$(ByVal S ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号