2012-01-17 67 views
2

我有一个需求,我需要打印一个完整的窗体而不显示在屏幕上。如何在不显示屏幕的情况下打印wpf窗口?

我需要的是:

  1. 初始化形式
  2. 打印

所有,而不显示在屏幕上。

有什么建议吗?

+0

嗨。说,这与mvvm有什么关系? – 2012-01-17 13:55:37

+0

删除mvvm标记 – SvenG 2012-01-17 14:08:54

回答

3

您可以使用PrintDialog.PrintVisual方法执行此操作。

var capabilities = printDlg.PrintQueue.GetPrintCapabilities(printDlg.PrintTicket); 

//get scale of the print wrt to screen of WPF visual 
var scale = Math.Min(capabilities.PageImageableArea.ExtentWidth/this.ActualWidth, capabilities.PageImageableArea.ExtentHeight/this.ActualHeight); 

//Transform the Visual to scale 
this.LayoutTransform = new ScaleTransform(scale, scale); 

// Get the size of the printer page 
var sz = new Size(capabilities.PageImageableArea.ExtentWidth, capabilities.PageImageableArea.ExtentHeight); 

//update the layout of the visual to the printer page size. 
this.Measure(sz); 
this.Arrange(new Rect(new Point(capabilities.PageImageableArea.OriginWidth, capabilities.PageImageableArea.OriginHeight), sz)); 

//now print the visual to printer to fit on the one page. 
printDlg.PrintVisual(visual, String.Empty); 
+0

我看到这有两张选票,但它真的回答了这个问题吗?它看起来像可视化(这个)仍然必须在它能够打印之前显示在屏幕上。 – MojoFilter 2013-10-30 12:39:18

相关问题