У созданного мною WPF-приложения есть Viewport3D, связывающий все виды объектов UIElement3D.Теперь я хочу сохранить снимок высокого разрешения определенного вида в файл.Я пробовал RenderTargetBitmap в прошлом, но мне не нравится этот подход из-за следующих недостатков:
- Утечка памяти (по крайней мере, в .NET 3.5 SP1).Это должно быть решено, однако, с 4.0, но я еще не проверял это.
- Программный рендеринг не дает таких же результатов, как аппаратный рендеринг при использовании сглаживания и пиксельных шейдеров.
- RenderTargetBitmap needsмного времени (например, 10 секунд) для формирования изображения, а не доли секунды, необходимой для отображения на экране.
Поэтому мне интересно, можно ли будет использовать VisualBrush, содержащийскопируйте снимок в новом элементе управления / окне (желательно вне экрана), а затем извлеките содержимое через передний или задний буфер с использованием методов DirectX или GDI.Я мог предположить, что разрешение вне возможностей графической карты могло бы быть проблемой, но это могло быть решено, захватывая многократные вспомогательные изображения и соединяя их вместе назад.Так кто-нибудь с некоторыми идеями на эту тему?
Помните, что я читал о DirectX, XNA, SlimDX, GDI +, BitBlt и т. Д., Но это все, что я имею в этой области.Целевая платформа - Windows XP +.Если решение возможно, но не на XP, я хотел бы знать также.
С наилучшими пожеланиями,
Ян ван де Пол