如何打印面板的内容

时间:2011-04-25 12:47:51

标签: vb.net winforms printing

如何在vb.net,VS-2010 Winform中打印面板的内容。

我尝试了here提供的代码,但由于某些原因它无效。

我正在尝试在面板中打印表单

enter image description here

1 个答案:

答案 0 :(得分:1)

Declare Auto Function SendMessage Lib "user32" ( _
         ByVal hWnd As IntPtr, _
         ByVal Msg As Integer, _
         ByVal wParam As IntPtr, _
         ByVal lParam As Integer) As Integer
Private Enum EDrawingOptions As Integer
    PRF_CHECKVISIBLE = &H1
    PRF_NONCLIENT = &H2
    PRF_CLIENT = &H4
    PRF_ERASEBKGND = &H8
    PRF_CHILDREN = &H10
    PRF_OWNED = &H20
End Enum

Private Function PrintPanel()
 Const WM_PRINT As Integer = &H317

    Dim myBmp As Bitmap
    Dim myGraphics As Graphics
    Dim hdc As System.IntPtr

    myBmp = New Bitmap( _
        Me.FormsDispPanel.DisplayRectangle.Width, _
        Me.FormsDispPanel.DisplayRectangle.Height)

    myGraphics = Graphics.FromImage(myBmp)
    myGraphics.DrawRectangle(Pens.White, New Rectangle(0, 0,      
  Me.FormsDispPanel.DisplayRectangle.Width, Me.FormsDispPanel.DisplayRectangle.Height))
    hdc = myGraphics.GetHdc
  '"FormsDispPanel" is your PAnel to print
    Call SendMessage(FormsDispPanel.Handle, WM_PRINT, hdc, _
        EDrawingOptions.PRF_CHILDREN Or _
        EDrawingOptions.PRF_CLIENT Or _
        EDrawingOptions.PRF_NONCLIENT Or _
        EDrawingOptions.PRF_OWNED)

    myGraphics.ReleaseHdc(hdc)

    myBmp.Save("d:\out.bmp")

    myGraphics.Dispose()
    myGraphics = Nothing

    myBmp = Nothing
    End Function