2012-01-17 68 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

相關問題