的显示PrintPreviewDialog
是完美的,如果我这样做PrintDocument.Print()
并使用像 PDF995 这样的虚拟打印机,它也很完美。但是,如果我这样做PrintDocument.Print()
并选择了一台物理打印机(是的,我已经尝试了多台打印机),那么框的左上角放置正确,而不是右下角放置。右下角距右侧 5.5 毫米(在纸上),距底部 7 毫米。
我已经画了一个视觉辅助来进一步澄清发生了什么。红框是我所期望的,当我使用PrintPreviewDialg
或打印到虚拟打印机时会发生什么。蓝色框是我使用PrintDocument.Print()
并选择物理打印机时发生的情况。
有谁知道为什么会发生这种情况,更重要的是我能做些什么来解决它?
我的打印按钮的代码...
Dim doc As New Printing.PrintDocument
doc.OriginAtMargins = True
doc.DefaultPageSettings.Margins = New Printing.Margins(50, 50, 50, 50)
AddHandler doc.PrintPage, AddressOf PrintPage
Dim printer As New PrintDialog
printer.Document = doc
printer.UseEXDialog = True
If printer.ShowDialog(Me) = Windows.Forms.DialogResult.OK Then
printer.Document.Print()
End If
我的打印预览按钮的代码...
Dim doc As New Printing.PrintDocument
doc.OriginAtMargins = True
doc.DefaultPageSettings.Margins = New Printing.Margins(50, 50, 50, 50)
AddHandler doc.PrintPage, AddressOf PrintPage
Dim preview As New PrintPreviewDialog
preview.Document = doc
preview.ShowDialog(Me)
PrintPage()
例行代码...
Public Sub PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
Dim Bounds As New Rectangle(e.PageSettings.PrintableArea.X, e.PageSettings.PrintableArea.Y, e.MarginBounds.Width, e.MarginBounds.Height)
e.Graphics.DrawRectangle(Pens.Black, Bounds)
e.HasMorePages = False
End Sub
我也尝试过设置OriginAtMargin
和False
使用e.MarginBounds
而不是我的Bounds
Rectangle
. 两者都导致完全相同的行为。