图形处理
文章平均质量分 66
homezj
这个作者很懒,什么都没留下…
展开
-
快速对图片进行滤光处理
想快速地对指定图片或区域进行滤光处理,常见的方法取出图片数据,逐像素与指定滤光色进行AND运算,很麻烦。还见过网上流传的有用Point或GetPixel取点运算的,其低速可想而知。其实利用BitBlt的位运算,可高速完成这种操作,下面这个函数比数组运算方法可快10倍,比Point或GetPixel估计会快上千倍。Private Type RECT Left As Long原创 2005-04-15 22:48:00 · 2511 阅读 · 0 评论 -
任意指定透明色的绘图方法
透明位图绘制方法在网上见得很多,多数是采用事先做好一个Mask图,这方法优点是速度快,但就是太麻烦,灵活性差。任意指定透明色,当然经常也要用到,为此,API提供了一个函数TransparentBlt,可这个函数,非常让人遗憾,VB的API浏览器中不带它是有道理的,因为,它在Win98下有严重内存漏洞,你若有98系统,可试一下:for i=1 to 20000TransparentBlt ....n原创 2005-04-17 10:36:00 · 5128 阅读 · 0 评论 -
AutoRedraw属性为True时VB都做了什么?
AutoRedraw是VB特有的,大多数程序建立双缓冲是没有VB这么方便的,都需自己定义一个内存DC,这个DC,一般来说,只有程序内部知道,别的程序不太可能取得并改写它。AutoRedraw属性为True时,就建立了常说的双缓冲,拥有前台与后台两个hDC,这两个hDC在处理完WM_PAINT消息或调用Refresh方法后,会保持一致。双缓冲只是一种加快重绘前台DC的方法,用双缓冲时,DC绘图先在后原创 2005-04-12 20:31:00 · 8502 阅读 · 2 评论 -
可以代替窗体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 · 4864 阅读 · 1 评论 -
一种简单而快速的灰度图处理法
因自己的程序中需对一个窗体区域频繁进行彩色转灰度处理,为此专门写了个函数。处理对象是一块经常变化的动态区域,且是一系列绘图中的一部分,速度要求较高,算法上力求简单,所以采用以下两步方案:1、基于DDB来写,虽然转入DIB,可不必面对各种色深,会统一算法,但转换过程会让速度上慢很多,再者这只是针对屏幕位图的函数,并无保存需要。考虑实际情况,我只写了16、24、32位三种色深下的算法,其实4、8两种位原创 2005-04-14 21:47:00 · 7857 阅读 · 0 评论 -
多功能文本输出函数
这是一个我自己编写的多功能文本输出函数,可提供Print语句需配合定位、字体等属性才能实现的功能;还可提供自动换行、字体旋转、无效文本等功能。Public Enum DrawTextAlign DT_LEFT = &H0& DT_CENTER = &H1& DT_RIGHT = &H2& DT_TOP = &H0& DT_VCENTER = &H4& DT_原创 2005-04-15 23:02:00 · 4073 阅读 · 0 评论