Qt之使用GDI实现屏幕快速抓图与缩放
Posted 草上爬
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt之使用GDI实现屏幕快速抓图与缩放相关的知识,希望对你有一定的参考价值。
一.抓取和缩放
调动Qt自带的方法抓图效率很低,在实时性要求较高的场合无法满足要求,比如说抓图并转化成视频流传输来实现屏幕共享。这里采用GDI的方法来抓图,实测在抓取整个桌面(分辨率1920*1080)并等比例缩放到(1280*720)的情况下,不含鼠标耗时40毫秒左右,含鼠标50毫秒左右,基本满足要求。
下面是测试所用电脑配置:
抓取整个桌面或指定区域实际上原理是一样的,只不过桌面是个大一点的区域,在实际应用中可用用一个带边线可缩放的透明窗体来指定这个区域,如下图所示:
1.获取区域大小
RECT screenShareRect;
::GetWindowRect((HWND)m_hwnd,&screenShareRect);
//透明窗体有效区域的大小和坐标
int screenShareWidth=screenShareRect.right-screenShareRect.left-offset*2;
int screenShareHeight=screenShareRect.bottom-screenShareRec
以上是关于Qt之使用GDI实现屏幕快速抓图与缩放的主要内容,如果未能解决你的问题,请参考以下文章