1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
Imports System
Imports System.Windows.Forms
Imports System.Runtime.InteropServices 'fonctions API
Public Class Form1
Private Const WM_PRINT As Integer = &H317
Private Const PRF_CLIENT As Integer = &H4
Private Const PRF_CHILDREN As Integer = &H10
Private Const PRF_NONCLIENT As Integer = &H2
Private Const PRF_ERASEBKGND As Integer = &H8
Private Const PRF_OWNED As Integer = &H20
Dim memoryImage As Bitmap
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Fait disparaitre Barre de Titre et Croix avant d'imprimer
'ce qui a pour effet de remonter les controles enfants.
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
End Sub
Private Sub MenuImprimerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuImprimerToolStripMenuItem.Click
Printwindowex()
'--------PrintPreviewDialog1 pour les tests que tu pourras supprimer apres------------
PrintPreviewDialog1.Document = PrintDocument1
PrintPreviewDialog1.Show()
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Sizable
'--------A remettre apres-------------------------------------------------------------
'PrintDocument1.Print()
End Sub
Public Function Printwindowex() As Bitmap
Me.VerticalScroll.Value = 0
Dim gr As Graphics = Nothing
Dim hdc As IntPtr = IntPtr.Zero
Try
memoryImage = New Bitmap(800, 1200, Me.CreateGraphics())
gr = Graphics.FromImage(memoryImage)
hdc = gr.GetHdc()
Dim wParam As IntPtr = hdc
Dim lParam As IntPtr = New IntPtr(PRF_CLIENT Or PRF_CHILDREN)
Dim msg As Message = Message.Create(Me.Handle, WM_PRINT, wParam, lParam)
Me.WndProc(msg)
Catch ex As Exception
Finally
If (gr IsNot Nothing) Then
If (hdc <> IntPtr.Zero) Then
gr.ReleaseHdc(hdc)
gr.Dispose()
End If
End If
End Try
Return memoryImage
End Function
Private Sub PrintDocument1_PrintPage_1(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
e.Graphics.DrawImage(memoryImage, 10, 10)
End Sub
End Class |
Partager