Vb.net 打印分组框及其内容,并以A4大小打印

Vb.net 打印分组框及其内容,并以A4大小打印,vb.net,Vb.net,我正在打印组框,但打印不正确。 如何在A4大小的纸张上打印和安装。 这是我的密码 Private Sub printbtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles printbtn.Click PrintDialog1.Document = PrintDocument1 'PrintDialog associate with PrintDocument. If PrintD

我正在打印组框,但打印不正确。 如何在A4大小的纸张上打印和安装。 这是我的密码

Private Sub printbtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles printbtn.Click
    PrintDialog1.Document = PrintDocument1 'PrintDialog associate with PrintDocument.
    If PrintDialog1.ShowDialog() = DialogResult.OK Then
        PrintDocument1.Print()
    End If
End Sub

Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    Dim x As Single = e.MarginBounds.Left
    Dim y As Single = e.MarginBounds.Top
    Dim bmp As New Bitmap(Me.GroupBox1.Width, Me.GroupBox1.Height)
    Me.GroupBox1.DrawToBitmap(bmp, New Rectangle(0, 0, Me.GroupBox1.Width, Me.GroupBox1.Height))
    e.Graphics.DrawImage(DirectCast(bmp, Image), x, y)
End Sub
并获得如下输出

代码如下:

Dim WithEvents PrintDocument1 As Printing.PrintDocument = New Printing.PrintDocument

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    PrintDocument1.Print()
End Sub


Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    Dim x As Single = e.MarginBounds.Left
    Dim y As Single = e.MarginBounds.Top
    Dim bmp As New Bitmap(Me.GroupBox1.Width, Me.GroupBox1.Height)
    Me.GroupBox1.DrawToBitmap(bmp, New Rectangle(0, 0, Me.GroupBox1.Width, Me.GroupBox1.Height))

    'Get the A4 size 
    Dim limitX As Integer = e.PageBounds.Width
    'use this to reduce your screenshot for the A4 format page
    Dim reduceMe As Double = limitX / Me.GroupBox1.Width


    Dim reducedBmp As New Bitmap(bmp, CInt(Me.GroupBox1.Width * reduceMe), CInt(Me.GroupBox1.Height * reduceMe))
    e.Graphics.DrawImage(reducedBmp, x, y)

End Sub
这个怎么样:

Dim srcRect As Rectangle = GroupBox1.ClientRectangle
Dim desRect As New Rectangle(e.MarginBounds.X, e.MarginBounds.Y, e.MarginBounds.Width, GroupBox1.Height)
Dim bmp As New Bitmap(srcRect.Width, srcRect.Height)

GroupBox1.DrawToBitmap(bmp, srcRect)

e.Graphics.SmoothingMode = SmoothingMode.HighQuality

e.Graphics.DrawImage(bmp, desRect, srcRect, GraphicsUnit.Pixel)

bmp.Dispose()
祝您好运。

您需要调整页面宽度和/或。