2010-11-08 111 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