C# 打印Windows窗体

C# 打印Windows窗体,c#,.net,winforms,printing,C#,.net,Winforms,Printing,我继承了一些代码来打印表单的内容,但是在纸上生成的图像似乎有某种阴影/模糊,好像它试图进行反松弛,但效果不是很好,并且字母在边缘被像素化 有人知道提高最终质量的方法吗 System.Drawing.Printing.PrintDocument Doc = new System.Drawing.Printing.PrintDocument(); Doc.PrintPage += new System.Drawing.Printing.PrintPageEventHandle

我继承了一些代码来打印表单的内容,但是在纸上生成的图像似乎有某种阴影/模糊,好像它试图进行反松弛,但效果不是很好,并且字母在边缘被像素化

有人知道提高最终质量的方法吗

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);
        }
试试这个: e、 Graphics.SmoothingMode=SmoothingMode.HighQuality

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

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

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


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

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

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


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

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


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

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



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

“阴影/模糊”?这是最含糊的,也没有告诉我们你的问题。@joey:我的更新对你有帮助吗?反正我对此一无所知。我上次尝试打印表单是在VB6中,使用
PrintForm
函数。但我强烈怀疑“阴影/模糊”并不是那种能帮助人们了解更多的细节。@joey,它只是以低分辨率打印吗?你有没有考虑过制作一个分辨率更高的位图,比如说,大约300dpi@rowland如何提高分辨率?“阴影/模糊”?这是最含糊的,也没有告诉我们你的问题。@joey:我的更新对你有帮助吗?反正我对此一无所知。我上次尝试打印表单是在VB6中,使用
PrintForm
函数。但我强烈怀疑“阴影/模糊”并不是那种能帮助人们了解更多的细节。@joey,它只是以低分辨率打印吗?你有没有考虑过制作一个分辨率更高的位图,比如说,大约300dpi@rowland如何提高分辨率?请注意,打印抗锯齿是个坏主意,通常是因为抖动会导致结果更差。请注意,打印抗锯齿是个坏主意,通常情况下,由于抖动,结果会更差。我同意,但我不能在这种情况下使用Crystal Reports。好吧,用e.Graphics绘制。它看起来很棒,你可以用一种更适合纸张的格式呈现信息。肖像模式,没有难看的颜色斑点。我同意,但我不能在这种情况下使用水晶报告。好吧,用电子图形绘制。它看起来很棒,你可以用一种更适合纸张的格式呈现信息。肖像模式,没有难看的颜色斑点。我的屏幕分辨率是1920x1080,所以分辨率应该可以吗?使用位图类不是更好吗?正如Hans在上面评论的那样,您的屏幕分辨率远低于打印机的分辨率,这就是低质量的原因。如果不使用位图,您的意思是使用图像吗?它将以同样的结果结束。如果你想提高质量,你不能使用你现在使用的表格打印方法。我的屏幕分辨率是1920x1080,所以分辨率应该可以吗?使用位图类不是更好吗?正如Hans在上面评论的那样,您的屏幕分辨率远低于打印机的分辨率,这就是低质量的原因。如果不使用位图,您的意思是使用图像吗?它将以同样的结果结束。如果要提高质量,不能使用今天使用的表单打印方法。