В одном из проектов, над которыми я работаю, есть несколько уже существующих отчетов, которые печатаются с помощью поддержки печати MFC и более или менее выводятся непосредственно на DC принтера через GDI.Мы начали делать несколько новых (не связанных) отчетов через WPF / XAML, так как в любом случае мы переводим новый пользовательский интерфейс в WPF, и с ним гораздо удобнее работать для макета.
Другой ботинок, наконец, упал, иМне нужно добавить некоторые новые функциональные возможности в существующий печатный отчет, и новые функциональные возможности практически не требуются для реализации с WPF.Наши существующие отчеты WPF реализуются через страницы XAML, отправляемые в XpsDocument (в памяти, а не на диске) через XpsDocumentWriter.Я хотел бы иметь возможность продолжать использовать эту стратегию и использовать подход написания отчетов WPF / XAML, в которых некоторые страницы отображаются с помощью GDI.
Моя первая наивная попытка заключалась в том, чтобы встроить HwndHost вUIElement, который отображается в XpsDocumentWriter, но, похоже, не работает.Не удивительно, но попытка того стоила.
Следующим очевидным решением, IMO, будет рендеринг графики GDI в растровом изображении соответствующего размера и масштабирования и рендеринг этого растрового изображения на страницу в XpsDocument.Это бы сработало, но растровые изображения размером с страницу (особенно в памяти) выглядят как рецепт для высокого использования памяти и низкой производительности на медленных компьютерах.
В идеале я хотел бы преобразовать содержимое GDI в метафайлили какой-либо другой векторный формат, который затем может быть переведен в XPS.Но это должен быть автоматический процесс, который работает каждый раз, поскольку это просто функция печати документа.OTOH - это приложение для внутренних пользователей, поэтому мы можем смириться с некоторым снижением производительности
. Разработка WPF не является моей главной задачей, поэтому я бы назвал себя новичком без особых подробностей.знание основных деталей.Я просто хотел убедиться, что не пропустил что-то очевидное, прежде чем вернуться к использованию растрового изображения в качестве среды передачи, хотя я пока не нашел других достойных опций в своем поиске.
Все, что ядолжен смотреть в?