2011-10-27 34 views
0

QMLで生成された画面全体をキャプチャする方法はありますか? OpenGLやDirectXでコピー描画バッファのようなもの。このアイデアは、画面全体の出力をキャプチャし、画面のカメラフィードで画像の減算を行うことで、画面上のオブジェクトを検出できるようにすることです。QML描画バッファをキャプチャする方法

ありがとうございます。

答えて

2

あなたはQPixmap::grabWindow(...)が欲しいと思いますが、私はQMLを使用しないので、pixmapを入手するか、それを使用するかはわかりません。 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; 
    } 
}; 
+0

QPixmap :: grabWidget()は、QMLがQWidgetウィンドウにラップされているため、このケースで動作します。お手伝いありがとうございます。 –

関連する問題