1

我正在截取我的应用程序的屏幕截图并将其存储在位图中。到目前为止,一切都很好。然后我希望能够在我的标准打印机上以不同的分辨率打印该位图(一些用户使用网络打印机,他们可能需要很长时间才能打印“高质量”屏幕截图。这样的打印工作,但我对打印中图像的分辨率或更确切地说是质量有疑问。

为了打印,我使用该PrintDocument.Print方法。在该方法中,我尝试将PrinterSettings.PrinterResolutions属性设置为不同的值,例如 toPrinterResolutionKind.Low和 to PrinterResolutionKind.High。我希望在我们的打印机上看到不同的输出,但它们在我看来都是一样的(散装标准激光打印机)。基本上我认为设置为PrinterResolutionKind.Low会导致网络打印机的网络流量减少。

那么我是否使用了正确的方法?还是在使用不同PrinterResolutionKind的 s 打印位图时需要以某种方式修改位图?

任何帮助表示赞赏。

4

2 回答 2

1

散装标准激光打印机

您不太可能在激光打印机上看到差异,它们是矢量设备。与点阵打印机相反,点阵打印机是一种光栅设备,因此迫切需要支持多种打印分辨率。在点阵打印机上打印图形就像看着草生长一样。

你必须自己做。将位图重新缩放为更小的尺寸,使用 Bitmap(Image, int, int) 构造函数最容易完成。然后使用 PrintPage 事件处理程序中的 e.Graphics.DrawImage(Image, Rectangle) 重载将其重新调整为原始大小。或 e.Graphics.ScaleTransform()。如果打印机驱动程序合作(它应该)并将重新缩放请求传递给打印机而不是自己实现它,那么您将获得相应的打印数据减少。

当心输出质量大大降低。屏幕截图的分辨率已经比激光打印机低 6 倍,因此每个屏幕像素都会在纸上变成 6x6 的斑点。缩小图像会使情况变得更糟。

于 2013-10-09T15:07:56.353 回答
1

并非所有打印机驱动程序都支持多种分辨率,因此将打印机分辨率设置为PrinterResolutionKind.Low可能会产生与PrinterResolutionKind.High.

也有可能正在应用该设置,但打印输出中的差异并不明显。检查设置是否导致较低带宽的更好方法是暂停打印机并查看假脱机文件大小。如果假脱机文件大小较小,则您的更改会产生预期效果。

根据打印机驱动程序,PrinterResolutionKind.Draft可能会生成比PrinterResolutionKind.Low.

此外,请确保您将 DefaultPageSettings 设置为:

printDoc.DefaultPageSettings.PrinterResolution = PrinterResolutionKind.Draft

于 2013-10-09T14:35:13.040 回答