我試圖使用PrintDocument輸出DataGridView。在我的PrintPage事件處理程序中,我使用e.Graphics對象繪製一些網格線,然後在創建的「單元格」中打印一些文本 - 另一方面,這確實應該由微軟完成,但我離題了。當我使用轉換時,我的打印輸出看起來不像打印預覽
無論如何,這工作得很好。 PrintDocument綁定到PrintPreviewDialog,當我打開它時,DGV被正確渲染。用戶可以單擊預覽對話框的打印按鈕並打印輸出。我的問題是,有時DGV對於頁面來說太寬,所以我希望能夠縮放(僅水平)來適應。我打電話
e.Graphics.ScaleTransform(printableWidth/gridWidth)
在我真正開始繪製任何東西之前。這使預覽看起來完全按照我想要的方式進行,但出於某種原因,實際的打印輸出看起來與我在添加縮放代碼之前所做的完全相同 - 如果報告太寬,它會偏離這一頁!
PrintPage事件的預覽方式與發送給打印機的方式有什麼區別嗎?我的普通PostScript辦公激光打印機不能處理ScaleTransform功能嗎?我認爲它應該只是盲目打印發送給它的內容,但也許涉及的處理比我想象的要多。