1、半随机显示——setdibitstodevice
是的,该api实现的输出是半随机化的。简单的说,用这个函数输出的图片我们能够看到,但是它是不会被保存的,即使在vb中开启了autoredraw也一样。根据我的猜想,这个函数的实际功能非常简单,将一幅图片画到一个设备场景所在的区域,设置不经过这个hdc本身的管理。
那么根据现象以及由现象推出的本质,这个函数对我们来说只有一个优点:性能较高。但实际使用中的现象并非如此,该函数输出一幅640x480的位图平均需要6ms左右,如果你使用过bitblt函数,你会发现,这个操作的效率是如此之低,甚至不如设备场景间的图片传递。这是为什么?原因很简单,dib的转换。的确,setdibitstodevice是直接将图像画到hdc中,但是这个过程却一定要把dib的数据转换成hdc兼容的格式(就是hdc的图片格式本身),然后再绘出。所以要提高setdibitstodevice的执行性能,首先你创建的位图最好符合你预期要输出到的hdc的格式。
p.s.我很奇怪这个函数为什么要这样设计,因为它是不能保存改变的,即使用在打印hdc中也不能使得输出内容被打印出来。这个,希望有高手来解答了。
2、稳定化输出:createdibitmap
这个函数简单得多。你给出一个dib,他负责把内容copy下来,然后“封装”为一个hbitmap对象。你可以使用任何你想得到的方法对这个对象进行处理,根据我的实验,多数都是成功的。
不过千万不要妄想使用这个hbitmap对象进行原dib的输入操作。除非你用它创建了一个兼容的hdc,并且没有把这个hbitmap选入任何hdc对象。
3、随机输出:directx
这个很高深。为什么这么说?因为你要手动进行好多转换,然后以占用至少30mb内存为代价,来实现动态图像的极连贯的输出。在这里我不做详细介绍了,本人水平有限,正在研究这个东东。同样的,希望来个谁帮帮偶~
over.
不知道这篇小心得对大家有没有用,有用的话说一声,谢了~呵呵~
文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




