打印Windows窗体

我已经inheritance了一些代码来打印表单的内容但是在纸上生成的图像似乎有某种阴影/模糊,好像它试图做了反眩光但没有做得那么好并且字母在边缘像素化。

有谁知道提高最终质量的方法?

System.Drawing.Printing.PrintDocument Doc = new System.Drawing.Printing.PrintDocument(); Doc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.Doc_PrintPage123); Doc.DefaultPageSettings.Landscape = true; Doc.DefaultPageSettings.PrinterSettings.DefaultPageSettings.Landscape = true; Doc.DefaultPageSettings.PrinterSettings.Copies = 2; Doc.PrinterSettings.Copies = 2; Doc.Print(); private void Doc_PrintPage123(object sender, System.Drawing.Printing.PrintPageEventArgs e) { Bitmap bitmap = new Bitmap(AForm.Width, AForm.Height); AForm.DrawToBitmap(bitmap, new Rectangle(0, 0, bitmap.Width, bitmap.Height)); e.Graphics.DrawImage(bitmap, 0, 0); } 

这很正常。 打印机的分辨率比显示器容易6倍。 使用默认映射(1像素= 0.01英寸),您将在打印机上获得与屏幕上大小相同的位图。 屏幕上的1个像素在打印机上变成6 x 6像素的斑点。 是的,看起来不太好。

如果你将它画得小6倍,你会得到一个清晰的图像。 比邮票大一点。 不要打印表格。 通过使用e.Graphics来利用打印机分辨率。 当然,很多工作,像Crystal Reports这样的报表生成器很受欢迎。

表单将以其显示的分辨率呈现为位图。 模糊和像素化是由于图像分辨率低而您在打印时resize。

没有很好的方法来提高质量。 您可以尝试调整图像大小并应用某种平滑模式,如Mamta Dalal建议的那样,但这只会对像素化有所帮助。

如果您确实需要更高的质量,则必须使用其他机制来打印数据。 使用某种报表设计器可能是最简单的方法。

试试这个:e.Graphics.SmoothingMode = SmoothingMode.HighQuality;