I'm trying to print out a DataGridView using a PrintDocument. In my PrintPage event handler, I use the e.Graphics object to draw some grid lines, then print some text in the "cells" created -- as an aside, this really should have been done by Microsoft, but I digress.
Anyway, this works just fine. The PrintDocument is tied to a PrintPreviewDialog, and when I open it, the DGV is rendered correctly. The user can click the Preview dialog's print button and get a printout. My problem is that sometimes the DGV is too wide for the page, so I'd like to be able to scale it (horizontally only) to fit. I'm calling
e.Graphics.ScaleTransform(printableWidth / gridWidth)
before I actually start drawing anything. This makes the preview look exactly the way I want it to, but for some reason, the actual printout looks exactly like it did before I added the code for scaling -- if the report is too wide, it just falls right off the side of the page!
Is there some difference between the way that a PrintPage event is handled for preview versus how it's sent to the printer? Would my run-of-the-mill PostScript office laser printer not be able to handle the ScaleTransform function? I would think it should just blindly print what's sent to it, but maybe there's more processing involved than I thought.