打印Windows窗体

时间:2010-09-16 12:08:35

标签: c# .net winforms printing

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

有谁知道改善最终质量的方法?

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);
        }

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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