2010-11-08 109 views
0

我有c#winform應用程序。打印winform屏幕

我想打印的所有表單對象,標籤,文本框等。

捕獲屏幕不適合我的解決方案,因爲我的窗體有滾動。

我該怎麼做?

謝謝。

回答

2

這只是不起作用。無論如何,這是非常不恰當的,打印機的分辨率是好於您的屏幕分辨率。屏幕截圖在紙上看起來非常難看,特別是文字變得浮腫,抗鋸齒像素變得非常明顯。

咬住項目符號並放置窗體上的PrintDocument組件。您通常需要在PrintPage事件處理程序中編寫相當數量的代碼。但它不是硬代碼,它看起來很棒,你可以讓它看起來就像你想要的那樣。一定要讓它看起來像報告,而不是屏幕截圖。使用PrintPreviewDialog避免浪費大量紙張。像RDLC和Crystal Reports這樣的報告生成器也是常見的解決方案。

3
+0

謝謝。但是我的表單太長(帶滾動)。所以它不幫助我。 – Jack 2010-11-08 08:18:51

+0

@Jack,我沒有嘗試使用多頁表單,但是我用datagrid做了這個,在http://www.c-sharpcorner.com/UploadFile/mgold/HowToPrintaDataGridinCsHARPand.NET11212005060838AM/HowToPrintaDataGridinCsHARPand.NET.aspx中的示例是for多個頁面,'HasMorePages'是一個關鍵字,用於打印多個頁面 – 2010-11-08 10:22:19

2

試試這個它會使你的形式`

Bitmap b = new Bitmap(this.Bounds.Width, this.Bounds.Height); 
this.DrawToBitmap(b, new Rectangle(0,0,this.Width,this.Height)); 
b.Save("C:\\a.bmp");` 

的位圖通過這個形象,你也可以打印而不是保存它...

+0

此選項不會「打印」所有控件內容。對於某些控件,內容被省略。 – ArBR 2011-03-09 18:22:01

+0

@阿爾布里託 - 請你說明什麼控制/內容類型將被省略? – BornToCode 2012-12-11 15:55:26