2010-07-28 79 views
1

我们有一个复杂的Winforms应用程序,每个表单可能包含多个子表单,并且需要能够打印这些表单中包含的数据。打印复杂Winforms

当前我们正在使用PrintDocument控件。对于我们希望打印的每个表单(或表单元素),我们调用Control.DrawToBitmap()方法,然后在打印时将其绘制到Graphics对象。

这主要是有效的,我们有解决方法打印带有可滚动内容的表单的全部内容。

但是,我们遇到了2个问题。

1)打印质量非常低,在很多情况下几乎不可读;而

2)打印出看起来很不同,这取决于用户的屏幕分辨率

是否有打印C#的形式什么好的解决办法?当然这是以前解决的问题吗?我喜欢一种不需要我基本上重新实现前端的方法(与Crystal Reports一样)

回答

2

您可能想要增加正在绘制的位图/矩形的大小。如果位图分辨率较低,则在打印的纸张上看起来不太好。如果显示器每英寸点数超过120像素/点,并且尽管大多数打印机可以以150dpi打印,则显示器是幸运的,但打印机的默认设置通常为300/600dpi。我不知道PageUnit测量结果是否对使用PrintDocument的输出有影响,但在绘制表面时我使用GraphicsUnit.Point。 (当然,不要将位图太大,否则打印速度会因为发送给打印机的数据量减少或失败)。