我正在尝试使用打印文档打印出DataGridView。在我的printpage事件处理程序中,我使用e.graphics对象绘制一些网格线,然后在创建的“单元格”中打印一些文本——顺便说一下,这确实应该由Microsoft完成,但我离题了。
不管怎么说,这很管用。打印文档绑定到一个打印预览对话框,当我打开它时,将正确呈现DGV。用户可以单击预览对话框的打印按钮并获得打印输出。我的问题是,有时DGV对于页面来说太宽了,所以我希望能够缩放它(仅水平)以适合页面。我打电话来
e.Graphics.ScaleTransform(printableWidth / gridWidth)
在我开始画任何东西之前。这使预览看起来与我想要的完全一样,但出于某种原因,实际打印输出看起来与添加用于缩放的代码之前完全一样——如果报表太宽,它就会从页面的右侧掉落!
处理打印页事件进行预览的方式与发送到打印机的方式有什么区别吗?我运行的工厂PostScript办公室激光打印机是否无法处理缩放转换功能?我认为它应该只是盲目地打印发送给它的内容,但可能涉及的处理比我想象的要多。