VB图像处理多次undo如何实现
做毕业论文的时候遇到的一个问题,请教豆瓣上的网友才有了答案。谢谢这位叫“异彩”的朋友。拿出来与大家分享。
用VB做图像处理软件的毕业论文,遇到一个问题。加载一幅图片,用多个滤镜分别处理,想一步一步UNDO到最原始的图像,多次UNDO怎么实现?
参考方案:
如果想做到多次UNDO的话, 无疑是需要记录操作的每次步骤. 具体有两种形式:
1, 在程序内存中存贮:
在程序中建立栈(不知道你学过没学过栈, 如果没有的话可直接理解为数组), 栈满足了后进先出(LIFO)的的规则.
在每次进行对图像的操作时, 都将上一幅图像备份(注意是深层备份, 如果是浅表引用的话是起不到效果的)到到这个栈中. 这样, 当执行UNDO时, 就可以从栈里面提取一个上一次保存的图像, 替代当前图像(并删除这个备份), 知道这个栈为空. 实现了多次UNDO.
这种方法的特点是处理数度比较快, 但是也非常消耗内存.
2. 在文件中存储:
同样是备份每个操作前的图像,但这次是存储到硬盘上, 这需要你以一定的文件名规范(xxx_temp_1.jpg, xxx_temp_2.jpg依次等等)去防止重名的情况. 同样在UNDO的时候, 去加载上一个编号的文件, 并删除之, 这样也实现了多次UNDO.
这种方法的特点自然是消耗内存少, 但是undo的处理速度没有前者快.
3. 两种方法结合.
略...
相关文档:
总述
本文叙述了如何在VB中实现控件的IobjectSafety接口,以标志该控件是脚本安全和初始化安全的。VB控件默认的处理方式是在注册表中注册组件类来标识其安全性,但实现IobjectSafety接口是更好的方法。本言语包括了实现过程中所需的所有代码。
请注意,控件只有确确实实是安全的,才能被标识为“安全的”。本 ......
最近刚学会在VB2008 中使用参数化SQL语句,于是马上用到代码中,却碰到查不到任何数据的情况,纠结了好几天,还是没有搞明白,差点吐血。不得已还是先在代码中使用字符串拼接的SQL语句。
包含参数化SQL语句的代码如下:
Dim cmSl As N ......
'******************************************************************************************
'* 需要注意的问题 *
'******************************************************************************************
'1.INI文件的路 ......
VB 长整型和字节数组的转换问题 (Long<>Byte)
Posted by JiaJia 17 March,2009 (0)Comment
用到的API声明:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Long2Byte
Dim TempLng As Long
Dim TempBytes(0 To 3) As Byte ......
Public Function IsValidIPAddress(ByVal strIPAddress As String) As Boolean
On Error GoTo Handler
Dim varAddress As Variant, n As Long, lCount As Long
varAddress = Split(strIPAddress, ".", , vbTextCompare)
If IsArray(varAd ......