0
有沒有辦法捕捉QML生成的整個屏幕?像在OpenGL或DirectX中複製繪圖緩衝區。這個想法是捕獲整個屏幕的輸出,然後用屏幕的攝像頭進行圖像減法,以便我們可以檢測到屏幕頂部的物體。如何捕獲QML繪圖緩衝區
謝謝。
有沒有辦法捕捉QML生成的整個屏幕?像在OpenGL或DirectX中複製繪圖緩衝區。這個想法是捕獲整個屏幕的輸出,然後用屏幕的攝像頭進行圖像減法,以便我們可以檢測到屏幕頂部的物體。如何捕獲QML繪圖緩衝區
謝謝。
我認爲你想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;
}
};
QPixmap :: grabWidget()在這種情況下適用於我,因爲我的QML封裝在QWidget窗口中。感謝您的幫助。 –