我構建的WPF應用程序具有一個包含各種UIElement3D對象的Viewport3D。現在我想將某個視圖的高分辨率快照保存到文件中。我過去嘗試過RenderTargetBitmap,但由於以下缺點,我不喜歡這種方法:使用WPF結合硬件渲染代替RenderTargetBitmap
- 內存泄漏(至少在.NET 3.5 SP1中)。但應該用4.0來解決,但我還沒有測試過。
- 使用抗鋸齒和像素着色器時,軟件渲染不會產生與硬件渲染相同的結果。
- RenderTargetBitmap需要大量的時間(如10秒)才能形成圖像,而不是屏幕上顯示所需的秒數的一小部分。
所以我不知道它是否可能使用VisualBrush,含有快照拷貝,在一個新的控制/窗口(優選離屏),然後抓住內容線槽前置式或後備緩衝使用DirectX或GDI技術。我可以想象,除了顯卡功能之外的解決方案可能是一個問題,但這可以通過抓取多個子圖像並將它們連接在一起來解決。那麼有人對這個主題有一些想法?
請記住,我已經閱讀過關於DirectX,XNA,SlimDX,GDI +,BitBlt等等,但這些都是關於這些問題的所有經驗。目標平臺是Windows XP +。如果一個解決方案是可能的但不是在XP上,我也想知道。
最好的問候,
揚·德波爾
我曾經看過那篇文章,但從未設法讓它起作用。您是否有樣品,或者您是否知道需要採取措施來獲取單個Viewport3D對象的內容。與此同時,我切換到.NET 4.0 – 2011-04-22 14:02:14