Как клонировать Canvas Control wpf?
В настоящее время я работаю над настольным приложением. В котором я печатаю Canvas Control, используя PrintVisual Метод диалогового окна печати. Я передаю холст из вида для просмотра модели в качестве параметра команды. В представлении Модель я выполняю Преобразование поворота на холсте (я хочу напечатать свой контент с поворотом на 180 градусов). Но я хочу, чтобы это было только в моей модели просмотра, а не в настоящее время. В настоящее время я сталкиваюсь с проблемой, заключающейся в том, что мой элемент управления холст также вращается в представлении, которое я не хочу Пожалуйста, помогите мне решить мою проблему. Заранее спасибо.
2 ответа
Я думаю, что вы можете обойти это свойство PrintDialogs PrintTicket.PageOrientation, которое принимает такое перечисление:
- Пейзаж
- Портрет (по умолчанию)
- ReverseLandscape
- ReversePortrait
- неизвестный
Вот так:
PrintDialog pd = new PrintDialog();
pd.PrintTicket.PageOrientation = PageOrientation.ReversePortrait;
You can make your transformations on a new Canvas
с VisualBrush
of your original Canvas
как Background
,
PS: There is a VisualBrush constructor overload that accepts a Visual
,
РЕДАКТИРОВАТЬ
This should give you an idea:
Canvas printCanvas = new Canvas();
printCanvas.Background = new VisualBrush(yourOriginalCanvas);
printCanvas.RenderTransform = new RotateTransform(180);