2012-03-05 11 views
2

私のプログラムのスクリーンショットを取ってpng(またはpdfとして可能な場合)として保存したいと考えています。私はQtからスクリーンショットの例を取っ​​てきました。これは、ディスプレイ全体からスクリーンショットを取ります。しかし、ディスプレイの別の位置にあっても、私のウィンドウの一部だけからスクリーンショットを撮りたいです。どうやってやるの。機能はありますか?Qt-Windowの小さな部分のスクリーンショット

答えて

4

static機能grabWidgetQPixmapはあなたの友人です。提供されたウィジェットのピクスマップを簡単に取得して、必要な任意の形式で簡単に保存できます。

QPixmap p = QPixmap::grabWidget(widget); 
p.save("p.png"); 
0

ウィンドウの位置とサイズを調べます。スクリーンショットで見たい特定の要素がある場合は、代わりにその位置とサイズを取得できます。それ以外の場合は、ウィンドウの位置からのオフセットを使用する必要があります。これにより、問題が発生する可能性があります(たとえば、ウィンドウのサイズが変更されたときなど)。

スクリーンショットを取得してから、前回の位置/サイズを使用してpixmapを作成します。

1つの欠点があります。デスクトップ全体のスナップショットを撮るのがやや遅いです。

したがって、アプリケーションを変更する方がよい場合があります。オフスクリーンバッファーに保存する部分をレンダリングします。このバッファを使用してUIをレンダリングし、スクリーンショットを同時に保存することができます。

関連する問題