我试图使用PrintDocument输出DataGridView。在我的PrintPage事件处理程序中,我使用e.Graphics对象绘制一些网格线,然后在创建的“单元格”中打印一些文本 - 另一方面,这确实应该由微软完成,但我离题了。当我使用转换时,我的打印输出看起来不像打印预览
无论如何,这工作得很好。 PrintDocument绑定到PrintPreviewDialog,当我打开它时,DGV被正确渲染。用户可以单击预览对话框的打印按钮并打印输出。我的问题是,有时DGV对于页面来说太宽,所以我希望能够缩放(仅水平)来适应。我打电话
e.Graphics.ScaleTransform(printableWidth/gridWidth)
在我真正开始绘制任何东西之前。这使预览看起来完全按照我想要的方式进行,但出于某种原因,实际的打印输出看起来与我在添加缩放代码之前所做的完全相同 - 如果报告太宽,它会偏离这一页!
PrintPage事件的预览方式与发送给打印机的方式有什么区别吗?我的普通PostScript办公激光打印机不能处理ScaleTransform功能吗?我认为它应该只是盲目打印发送给它的内容,但也许涉及的处理比我想象的要多。