0

私の欲求不満を許してください。私はこれについて多くの場所で尋ねてきましたが、Windows 7 SDK でこれを達成する方法がないとは真剣に考えていません。

私が望むのは、親によって作成された「子ウィンドウ」( setParent() ) の一部をキャプチャすることだけです。以前は bitblt() でこれを行っていましたが、問題は、子ウィンドウが任意のタイプのアプリケーションである可能性があり、私の場合、そのセクションで OpenGL が実行されていることです。それを bitblt() すると、OGL 部分が空白になり、BMP に書き込まれません。

DWM、特に dwmRegisterThumbnail() では、子ウィンドウのサムネイルを生成できません。ですから、私に方向を教えてください。

ありがとう。

4

4 に答える 4

1

私がこれを行ってからしばらく経っているので、私の説明は少し曖昧かもしれませんが、私が覚えている限りでは、Windows はウィンドウ内でレンダリングされた OpenGL を「認識」していません。

Windows が行うことは、指定されたサイズでウィンドウを作成し、レンダリングのために OpenGL に「渡す」ことです。これは、コードの Windows 側からレンダリングされたピクセルを取得できないことを意味します。

3D をキャプチャしたいときは、画面をオフスクリーン ビットマップに再レンダリングし、保存 (または印刷) する必要がありました。

明らかに、最終的なピクセルを読み取っているため、画面全体のキャプチャ (Print Screen) が機能します。

于 2010-01-28T21:35:28.583 に答える
1

次のことをお勧めします。

  1. タスクのサムネイル部分は忘れてください (キャプチャに関して)。
  2. あなたの窓がどこにあるかを計算します。
  3. フルスクリーンをキャプチャします。
  4. 関心のある領域を切除します (ステップ 2 のデータを使用)。
  5. 適切なサムネイル サイズに再スケーリングします。

申し訳ありませんが、より多くの作業が必要ですが、動作するはずです。これは、現在のものよりも優れています。

于 2010-03-31T00:20:22.880 に答える
0

OpenGL を含む、開いている可能性のある子ウィンドウのソース コードにアクセスできません。

于 2010-01-29T05:33:54.140 に答える