BitBlt ,StretchBlt 都是 GDI32 提供的画屏函数,一般情况下,这两个函数应该是一致的。可是
我在测试抓屏操作的时候,却发现 BitBlt某些情况下比StretchBlt慢很多,估计和显卡有关。
测试环境:
操作系统 : Windows 2000 CHS Sp4
硬件配置:
公司的电脑: P4 2.4G 板自带显卡(intel 芯片的显卡)
家里的电脑: 赛扬1G,GF400 显卡(64M显存)
测试代码:
代码主要是 进行 60帧 抓屏操作,并利用 intel jpeg Lib 转换为 jpg Byte()
显示操作耗时。
http://www.federal.net.cn/testpic.rar (VB6)
请编译后运行
公司电脑上测试结果:
桌面色彩 | BitBlt | StretchBlt | |
公司电脑 | 1024*768 16bits | 25.47秒 | 2.2秒 |
家里电脑 | 1024*768 16bits | 7.03秒 | 4.31秒 |
公司电脑 | 1024*768 8bits(256色) | 25秒 | 48秒 |
家里电脑 | 1024*768 8bits(256色) | 45.3秒 | 4.51秒 |
结论
32bits 和 16bits 结果接近,所以没有测试
可以看出:StretchBlt 一般下都比 BitBlt 要快的多
而在 256 色下的性能反倒不如 16位色
有显卡使用 StretchBlt 可能可以使用硬件加速,而在256色下硬件加速失效