私が構築した WPF アプリケーションには、あらゆる種類の UIElement3D オブジェクトを含む Viewport3D があります。今、特定のビューの高解像度スナップショットをファイルに保存したいと考えています。過去に RenderTargetBitmap を試したことがありますが、次の欠点があるため、このアプローチは好きではありません。
- メモリ リーク (少なくとも .NET 3.5 SP1 では)。ただし、4.0 で解決されるはずですが、まだテストしていません。
- アンチエイリアシングとピクセル シェーダを使用すると、ソフトウェア レンダリングはハードウェア レンダリングと同じ結果になりません。
- RenderTargetBitmap は、画面に表示するのに数分の 1 秒かかるのではなく、画像を形成するのに多くの時間 (10 秒など) を必要とします。
したがって、スナップショットのコピーを含む VisualBrush を新しいコントロール/ウィンドウ (できればオフスクリーン) で使用し、DirectX または GDI 技術を使用してフロントバッファーまたはバックバッファーを介してコンテンツを取得することが可能かどうか疑問に思います。グラフィックカードの能力を超える解像度が問題になる可能性があると想像できましたが、それは複数のサブイメージを取得し、後でそれらをつなぎ合わせることで解決できます. では、このトピックに関するアイデアをお持ちの方はいますか?
私は DirectX、XNA、SlimDX、GDI+、BitBlt などについて読んだことがありますが、これらの問題に関する私の経験はこれだけです。ターゲット プラットフォームは Windows XP+ です。解決策が可能であるが XP ではない場合、私も知りたいです。
よろしくお願いします、
ヤン・ファン・デ・ポル