我们有一个复杂的Winforms应用程序,每个表单可能包含多个子表单,并且要求能够打印这些表单中包含的数据。
目前我们正在使用PrintDocument控件。对于我们要打印的每个表单(或表单元素),我们调用Control.DrawToBitmap()
方法,然后在打印时将其绘制到Graphics
对象。
这主要是有效的,我们有解决方法用于打印带有可滚动内容的表单的全部内容。
然而,我们遇到了两个问题。
1)打印质量非常低,在许多情况下几乎不可读;并且
2)根据用户的屏幕分辨率,打印输出看起来很不一样
打印C#表单有什么好的解决方案吗?当然这是一个以前解决过的问题?我喜欢一种方法,它不需要我基本上重新实现前端(与Crystal Reports一样)
答案 0 :(得分:2)
您可能希望增加要绘制的位图/ rects的大小。如果位图分辨率较低,则在打印的纸张上看起来不太好。如果监视器的速度超过每英寸120像素/点,则显示器很幸运,虽然大多数打印机可以150dpi打印,但打印机默认设置通常为300 / 600dpi。我不知道PageUnit
测量是否会使用PrintDocument
对输出产生影响,但在绘制表面时使用GraphicsUnit.Point
。 (当然,由于发送到打印机的数据量不足以使位图太大或打印速度会降低或失败。)