优化技巧
文章平均质量分 75
homezj
这个作者很懒,什么都没留下…
展开
-
优化代码时要选用正确的测试方法
想提高VB效率的时候,常用测试来检验算法的优劣,但测试本身的“算法”却被忽略!这里我很想说一段“故事”:我在研究一个Alpha运算的代码时,就感到了同样的问题:他把VB算法与API中的AlphaBlend做了比较,结果证明VB更快。因为我也写过一个Alpha运算的代码,所以针对他的源码做了分析,发现二者有两个不同,一是他使用的是了DIB,而我的是基于DDB,所以他的速度很一致,而我的因涉及不同色深原创 2005-04-12 19:56:00 · 2413 阅读 · 0 评论 -
一种简单而快速的灰度图处理法
因自己的程序中需对一个窗体区域频繁进行彩色转灰度处理,为此专门写了个函数。处理对象是一块经常变化的动态区域,且是一系列绘图中的一部分,速度要求较高,算法上力求简单,所以采用以下两步方案:1、基于DDB来写,虽然转入DIB,可不必面对各种色深,会统一算法,但转换过程会让速度上慢很多,再者这只是针对屏幕位图的函数,并无保存需要。考虑实际情况,我只写了16、24、32位三种色深下的算法,其实4、8两种位原创 2005-04-14 21:47:00 · 7903 阅读 · 0 评论 -
可以代替窗体Refresh方法的函数
VB中打开AutoRedraw可方便的建立双缓冲,利用API在后台绘图,最后一次性整体更新到前台,实现稳定无闪烁的动画效果,一般情况下,VB会自动进行后台到前台的刷新,这主要有两种情况:1、收到WM_PAIT消息2、代码调用Refresh方法能让VB收到WM_PAIT消息的情况主要有1、窗体被遮盖或隐藏后重现2、调用任何VB内部的图形方法,包括PaintPicture、Print、Cls、Line原创 2005-04-16 00:13:00 · 4908 阅读 · 1 评论 -
快速对图片进行滤光处理
想快速地对指定图片或区域进行滤光处理,常见的方法取出图片数据,逐像素与指定滤光色进行AND运算,很麻烦。还见过网上流传的有用Point或GetPixel取点运算的,其低速可想而知。其实利用BitBlt的位运算,可高速完成这种操作,下面这个函数比数组运算方法可快10倍,比Point或GetPixel估计会快上千倍。Private Type RECT Left As Long原创 2005-04-15 22:48:00 · 2539 阅读 · 0 评论