汉字勾边,恳请指教算法!
最近,碰巧逛进vbgood论坛,发现自己早在05年就注册了。认真看了些帖子,感觉这里高水平的不少,尤其有些人对图像的编程,真是让我景仰之情,犹如滔滔江水,绵延不绝啊!图像领域我一直想涉足的,何不趁这个劲头好好向高手们学学!从哪里入手呢?当然从实际应用出发,我是从事电视工作的,前段时间,紧急新增一栏目,需要提词器,硬件是我从旧的电视提词器改装,可软件没有,我只好从网上下载一个自己破解了用到现在(见我空间文章:https://hi.bccn.net/space-249791-do-blog-id-34579.html),一直想等有空了自己写个提词器软件替换这个。
这次正好就从这开始。首先从汉字图形勾边实验起,可是一开始就碰到非常棘手的麻烦:就是vb处理图形时的速度,速度啊!看了很多提高速度的手段,可以使用dib直接处理图形数据,可以使用模拟指针处理内存,这些都是针对整块图形的,并不针对算法的。
我的勾边算法有两个,一个可称为直线勾边算法:它的思路是一个像素点周围八个方向上只要是背景色即改为勾边色,当勾边数多时拐弯处都是直角。另一个可成为圆润勾边算法:它的思路是以一个像素点为圆心,以勾边数为半径获取逐点的圆的坐标,再从像素点坐标到圆点的坐标画直线,这样的勾边在拐角处很圆润自然,PS勾边的效果就是这样。两种算法我都实验成功了,扣除用getpixsel和setpixsel函数用时的200至250毫秒(可以使用DIB和指针提高),直线算法勾20边需要大约350毫秒,而圆润勾边算法需要5765毫秒,即5秒多了。
这是不能忍受的,要知道PS处理勾边基本上是实时的,几乎没有延时。是不是我的算法有问题还是vb本来就慢呢?现奉上源码,恳请有经验的高手赐教!
勾边.rar
(13.55 KB)
[ 本帖最后由 lowxiong 于 2012-2-18 11:33 编辑 ]