如何捕获QML绘图缓冲区
How to capture QML drawing buffer
是否有办法捕获由QML生成的整个屏幕?比如在OpenGL或DirectX中复制绘图缓冲区。这个想法是捕捉整个屏幕的输出,然后用屏幕的摄像头输入进行图像减法,这样我们就可以检测屏幕顶部的物体。
谢谢。
我认为你想要QPixmap::grabWindow(...)
,但恐怕我不使用QML,所以我不确定你将如何获得像素图或然后使用它。
查看一些Qt文档表明,子类化QDeclarativeImageProvider
将是一个很好的开始。比如:
class cScreenGrabber : public QDeclarativeImageProvider
{
public:
cScreenGrabber ()
: QDeclarativeImageProvider(QDeclarativeImageProvider::Pixmap) { }
QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize)
{
QWidget *ViewWidget = //get the widget containing your view//
QPixmap Pixmap = QPixmap::grabWindow(ViewWidget.winId(), 0, 0,
requestedSize.width() > 0 ? requestedSize.width() : -1,
requestedSize.height() > 0 ? requestedSize.height() : -1);
if (size)
*size = QSize(Pixmap.width(), Pixmap.height());
return Pixmap;
}
};
相关文章:
- C++字符*缓冲区的大小
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- ostream过载时的缓冲区冲洗
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- Xaudio2在更改缓冲区或循环时弹出声音
- 为什么我在leetcode上收到AddressSanitizer:地址0x602000000058上的堆缓冲区溢出错误
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 多线程双缓冲区
- Android P-9.0.0_r53 Logcat主缓冲区超出定义大小
- 套接字读取后,我在缓冲区中看到意外输入
- std::带有自定义缓冲区的 iostream 不允许我写入
- 从返回的顶点缓冲区查询顶点结构
- Vulkan 中的动态顶点缓冲区格式设置
- OpenGL 16 位模板缓冲区?
- Allegro 5绘图到缓冲区
- 向具有帧缓冲区的纹理发出绘图(纹理为空白)
- Win32双缓冲区绘图黑色背景
- 如何捕获QML绘图缓冲区