Impression d'un formulaire

alexbigfoug Messages postés 31 Date d'inscription dimanche 11 mars 2007 Statut Membre Dernière intervention 25 mai 2011 - 5 mai 2011 à 16:52
alexbigfoug Messages postés 31 Date d'inscription dimanche 11 mars 2007 Statut Membre Dernière intervention 25 mai 2011 - 6 mai 2011 à 08:12
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é.


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


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



Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

e.Graphics.DrawImage(memoryImage, 0, 0)

End Sub

Merci de votre aide !

3 réponses

AlKatou Messages postés 95 Date d'inscription vendredi 7 février 2003 Statut Membre Dernière intervention 28 novembre 2017
5 mai 2011 à 19:51
salut,

je n'ai pas testé ton code, mais une chose me choque. pourquoi fais-tu ta capture dans le Load ? perso, je l'aurai plus fait dans un évènement du style Show enfin une fois que la form est affiché et non pendant le chargement en mémoire.

en ce qui concerne donc le noir obtenu, pour moi cela vient des fonctions graphiques qui récupèrent la couleur de chaque pixel de ta form masquée donc valeur 0 qui peut être aussi la valeur de retour lors d'une erreur rencontrée.

solution de test : appel ta capture sur un clic de bouton par exemple


bonne continuation, alKa
0
alexbigfoug Messages postés 31 Date d'inscription dimanche 11 mars 2007 Statut Membre Dernière intervention 25 mai 2011
5 mai 2011 à 20:37
Je suis obligé de faire pendant le chargement du formulaire. En faite le formulaire que je veux imprimer ne reste quelques centièmes de seconde...

Il s'ouvre charge des données dans des labels, s'imprime (en noir en ce qui me concerne) puis se referme.
0
alexbigfoug Messages postés 31 Date d'inscription dimanche 11 mars 2007 Statut Membre Dernière intervention 25 mai 2011
6 mai 2011 à 08:12
Désolé pour le double post.

Effectivement, j'ai essayé avec un bouton et l'impression fonctionne sans problème. Mais malheureusement je dois trouver un autre moyen pour que cela fonctionne sans avoir à appuyer sur le bouton...
0
Rejoignez-nous