背景:
在我的工作中,有一个工作是需要将指定的窗口进行截屏,然后传送截屏数据。可以理解为TeamViewer的工作,不过不同点在于我们要截图的区域就是我们自己的播放软件,播放的内容有视频文字等等,而且播放区域不一定是一个窗口,可能是多个Form的组合,于是我们为了截取这个复合窗口,我们一直在考虑的是使用截屏的方式,取得整屏图像,然后截取我们的复合窗口部分即可。
比如我们的播放区域如下图:
目前遇到两个问题:
1.使用的截屏方法不够高效,速度慢
2.截屏会导致,我们窗口中可能播放的滚动的文字抖动,其本质在于我们的文字滚动原理是使用GDI每40ms绘制一次,这样才能让人眼感觉到连续的滚动(1000ms/24frame),这样对cpu的使用是很频繁的,而在截屏的那一刻势必牵扯到一次显卡数据拷贝的过程,这次拷贝比较大,于是我们文字的滚动收到影响,会顿一下。由于我们需要连续的截屏,然后将截屏数据传送出去在别的终端显示。于是文字就在不断地抖动了。。。
为了解决上述问题,才有了下面的完整报告: