首页 > 解决方案 > QNX 6.5.0 抓取屏幕或窗口 Qt C++

问题描述

我需要在 QNX 6.5.0 中抓取屏幕或窗口 - 每秒 8 次。如果使用标准的低级 API 函数PgReadScreen(),对于分辨率屏幕 1920x1080(24 位)它非常慢...当创建上下文 PdCreateDirectContext() 时,驱动程序会阻止所有其他绘画。它会冻结屏幕几秒钟。

我也查看了这些区域,但据我了解,它们不包含窗口的图形数据?

使用功能减少的 Qt 5.7.1。例如,函数grabWindow()未实现。

好主意:使用小部件的render()函数,但有些对象......例如:组合框列表也是小部件。我也得跟着画。

有任何想法吗?

标签: c++qtqnx

解决方案


抓窗户真的很简单。顶级QWidget( widget.isWindow()==true) 由QImage后备存储支持。获取它不需要重新绘制或调用 OS API。这个答案有一个有效的,大部分完整但简单的实现这个想法。只要使用光栅后端,它就应该可以移植到任何平台和任何小部件。


推荐阅读