在WPF中打印

Pan*_*yay 2 c# printing wpf

我知道如何调用打印对话框并执行其他操作.我的问题是:打印WPF页面的最佳做法是什么.

  1. 要调用具有所有边距的另一个页面,格式和布局就可以了.然后打印那个打印

  2. 要调用具有所有边距的用户控件,请确定格式和布局.然后打印那个打印

  3. 要调用具有所有边距的窗口,请确定格式和布局.然后打印那个打印

  4. 或者任何其他优选的方式.

请告诉我你如何进行打印?

HCL*_*HCL 9

在WPF中,您有许多选项可供打印.哪一个最适合的问题极大地依赖于IMO要打印的内容和所需的质量.

打印视觉
如果您想要打印与UI中的表示完全相同的内容,则可以尝试直接打印构建打印内容的根内容的视觉效果.如果您有定位问题并且必须更正此视觉的属性,我建议创建它的内存副本,转换副本然后打印出该副本.打印视觉效果有IMO的许多缺点.我很少使用它,除了短的黑客和迷你工具.如果我使用,我大多数必须创建提到的隐形副本并打印出来.如果你这样做,请注意你必须从代码中调用Measure and Arrange.

打印FlowDocument
另一种可能性是打印出FlowDocument.如果你有一些适合FlowDocuments的东西,我发现这是一个简单的方法来创建好的内容打印出来.大多数情况下,如果你有一些简单的报告,列出一些图像,这种方式是一个很好的方式.打印质量很好,只要您不想覆盖行为,就会自动完成许多复杂的操作,这也是可能的.这种打印输出的质量非常好.

XPS Printing
Hovever如果您有复杂的内容并且希望它能够很好地打印出来,则必须构建XPS内容并通过XPS打印路径进行打印.这样,你有各种可能性和选择,质量非常好,但你有最多的工作要做.我不喜欢它,但主要是我打印的方式.

我假设,你的问题主要涉及第一个区块,但是我认为如果打印视觉效果不合适,看看你有哪些选项可能会有所帮助(对我而言,这很少).希望这能回答你的问题.

  • @HCL:技术上更好的解决方案不一定总是最好的解决方案。这取决于客户想要什么以及客户准备为此支付什么。如果结果看起来必须如此,为什么要制定更复杂的解决方案呢?您对结果感到满意也很重要。如果不是为了客户,为什么不投资 XPS。但我必须承认,印刷并不是我喜爱的话题。我还没有看到任何我喜欢的打印平台。但这是我个人的感觉,也许有人更喜欢编程打印代码而不是创建漂亮的 GUI 或很酷的数据层:) (2认同)
  • @Pankaj Upadhyay:不,不需要创建文件。该文档可能有点令人困惑,因为它是一个广泛的主题。我很快就用谷歌搜索了一个操作方法:http://www.nbdtech.com/Blog/archive/2009/04/20/wpf-printing-part-2-the-fixed-document.aspx 如果您在 google 上搜索 [WPF 打印固定文档] (2认同)