2011-04-25 91 views
-1

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

我試過提供的代碼here,但由於某種原因,它不工作。

我想打印的面板

enter image description here

+1

我看不出有任何理由在面板中通過控制循環不會做的正是你想要的東西里面的表格。你說它不工作,但沒有詳細說明它在做什麼。這是一個非常基本的概念.... – 2011-04-25 12:52:08

+0

@Rhhound,你能舉出一個示例代碼嗎? – 2011-04-25 12:53:33

+0

可能的[如何在VB.net中打印]的副本(http://stackoverflow.com/questions/5776452/how-to-print-in-vb-net) – 2011-04-25 13:06:58

回答

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