背景
之前项目的截图方式是使用的screencap -p
命令,在QT中调用android的cmd函数实现截图,但是这个方法的缺陷是慢,截图有时候需要5S。其实在QT中,我们有更好的截图方式。
方案介绍
在QT5.12版本上,我们尝试过QScreen 的 grabWindow方法,尝试过QWidget的grab方法。这两个方法在android上都没法实现完美截图。基于一些原因,我们升级了QT版本到QT5.15,因为考虑到screencap -p
方法的效率比较低,为了优化,便尝试了QPixmap grabWidget
方法,发现这个函数可以实现完美截图,虽然在QT的官方文档中是这样写的:
但其实QWidget::grab()
和QScreen::grabWindow()
在Android平台上都不能截图,不知道QT官网验证过没。。。
代码
m_bgpixmap = QPixmap::grabWidget(this, this->rect());