Bonsoir !

J'ai trouver un code sur ce site qui me permet donc d'imprimer un formulaire.

Le problème c'est que quand je récupère ça dans mon fichier (impression dans un fichier) j'ai uniquement mon formulaire met tout est en noir (sur papier je vous dis pas l'encre gaspillé, j'ai testé...), pas de label, rien, nada 0, que dal, juste du noir...


Donc voici mon code, j'espères que vous allez pouvoir m'éclairer^^

Petite précision, si je modifie la taille de mon formulaire, le rectangle noir qui est imprimer est également modifié.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
Private Declare Function BitBlt Lib "gdi32.dll" Alias "BitBlt" (ByVal _
   hdcDest As IntPtr, ByVal nXDest As Integer, ByVal nYDest As _
   Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal _
   hdcSrc As IntPtr, ByVal nXSrc As Integer, ByVal nYSrc As Integer, _
   ByVal dwRop As System.Int32) As Long
    Dim memoryImage As Bitmap
 
 
    Private Sub CaptureScreen()
        Dim mygraphics As Graphics = Me.CreateGraphics()
        Dim s As Size = Me.Size
        memoryImage = New Bitmap(s.Width, s.Height, mygraphics)
        Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
        Dim dc1 As IntPtr = mygraphics.GetHdc
        Dim dc2 As IntPtr = memoryGraphics.GetHdc
        BitBlt(dc2, 0, 0, Me.ClientRectangle.Width, _
           Me.ClientRectangle.Height, dc1, 0, 0, 13369376)
        mygraphics.ReleaseHdc(dc1)
        memoryGraphics.ReleaseHdc(dc2)
    End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Private Sub F_impression_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
'je remplis les labelsavec des variables
...
...
 
'Appel de la procédure
CaptureScreen()
PrintDocument1.Print()
 
End sub
Merci de votre aide !