#wpf #printing #document #xps #writer
#wpf #печать #документ #xps #средство записи
Вопрос:
Я реализовал функцию печати для печати некоторых финансовых графиков в моем приложении WPF с помощью метода PrintVisual. Поскольку пользователь может свободно изменять размер своего окна и / или разрешение экрана, я использую методы LayoutTransform, Measure и Arrange, чтобы убедиться, что напечатанные диаграммы распределяются по всей странице равномерно, независимо от размера окна приложения. Все работает абсолютно хорошо, когда пользователь печатает на реальном принтере или выбирает драйвер печати PDF для печати. Преобразование макета вступает в силу за сценой и отображается при печати, но пользователь не испытывает никакого мерцания или изменения отображения на своем экране.
Проблема возникает, когда пользователь выбирает XPS Document Writer. Когда пользователь делает это, расположение на экране также меняется. При появлении диалогового окна «Сохранить как» макет экрана изменяется в зависимости от предоставленной LayoutTransform, в результате чего диаграммы становятся меньше или больше. В тот момент, когда пользователь сохраняет файл XPS ИЛИ нажимает «Отмена» в диалоговом окне «Сохранить как», макет возвращается к нормальному состоянию. Но странная часть в том, что это происходит только тогда, когда мы выбираем XPS Document Writer.
Но пользователь не хочет этого видеть.. Что я могу сделать, чтобы предотвратить это в случае XPS Document Writer?
Пожалуйста, предложите. Спасибо
Ответ №1:
возможно, вы сможете создать клон своего холста или визуального элемента перед применением преобразования. clone не встроен в wpf UIElements, но вы можете использовать XamlWriter.Save() и XamlReader.Загрузка для клонирования через XmlReader. загуглите «UIElement для клонирования wpf» или я могу опубликовать какой-нибудь код, если вы считаете, что это правильный путь.