中国开发网: 论坛: 程序员情感CBD: 贴子 183138
pcplayer
技术贴:bitblt 这个API函数的怪现象
FScreenBmp.Width:=Screen.Width;
FScreenBmp.Height:=Screen.Height;
FScreenBmp.PixelFormat:=pf24bit;


注意下面两句的区别:
bitblt(FScreenBmp.canvas.handle,0,0,FScreenBmp.width,FScreenBmp.height,ADC,0,0,srccopy);
bitblt(FScreenBmp.canvas.handle,0,0,100{FScreenBmp.width},100{FScreenBmp.height},ADC,0,0,srccopy);

按我的理解,第一句应该是抓到整个屏幕。运行结果的确也是抓到整个屏幕。

第二句,应该是抓到屏幕的(0,0)到(100,100)的画面,但我把抓到的图显示出来还是整个屏幕。

先不管这个参数是否能达到我只抓部分屏幕的想法。奇怪的问题是,这两句抓屏幕的语句消耗的CPU时间居然大大的不同。

第一句因为抓了整个屏幕,消耗230MS,第二句则只消耗30MS,差很远。如果第二句真的只抓了一部分画面,画面小了,消耗的时间小,也可以理解。问题是第二句抓下来的画面也是整个屏幕啊。这就有点奇怪了。

请高人们踊跃发表看法。

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录