我编写了一个以编程方式创建视觉效果的小应用程序,我试图将其打印在横向页面上(它以纵向剪辑)。当我打印时,它确实以横向显示,但我的视觉仍然被剪裁,因为它仅限于纵向。
这是我的代码:
StackPanel page = new StackPanel();
// ... generate stuff to the page to create the visual
PrintDialog dialog = new PrintDialog(); // System.Windows.Controls.PrintDialog
bool? result = dialog.ShowDialog();
if(result.HasValue && result.Value)
{
dialog.PrintTicket.PageOrientation = PageOrientation.Landscape;
Size pageSize = new Size { Width = dialog.PrintableAreaWidth,
Height = dialog.PrintableAreaHeight };
// pageSize comes out to {1056, 816}, which is the orientation I expect
page.Measure(pageSize);
// after this, page.DesiredSize is e.g. {944, 657}, wider than portrait (816).
page.UpdateLayout();
dialog.PrintVisual(page, "Job description");
}
执行此操作后,打印的内容排列正确,但似乎仍被剪裁为 816 的宽度,切断了大量内容。我已经通过将另一张纸放在打印的纸上来检查这一点,它完全适合里面。
在测量和安排控件方面我做错了什么吗?如何让我的打印机使用横向的全部空间?