Impression d'un formulaire

Messages postés
31
Date d'inscription
dimanche 11 mars 2007
Statut
Membre
Dernière intervention
25 mai 2011
- - Dernière réponse : 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 !
Afficher la suite 

3 réponses

Messages postés
95
Date d'inscription
vendredi 7 février 2003
Statut
Membre
Dernière intervention
28 novembre 2017
0
Merci
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
Commenter la réponse de AlKatou
Messages postés
31
Date d'inscription
dimanche 11 mars 2007
Statut
Membre
Dernière intervention
25 mai 2011
0
Merci
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.
Commenter la réponse de alexbigfoug
Messages postés
31
Date d'inscription
dimanche 11 mars 2007
Statut
Membre
Dernière intervention
25 mai 2011
0
Merci
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...
Commenter la réponse de alexbigfoug