alexbigfoug
Messages postés31Date d'inscriptiondimanche 11 mars 2007StatutMembreDernière intervention25 mai 2011
-
5 mai 2011 à 16:52
alexbigfoug
Messages postés31Date d'inscriptiondimanche 11 mars 2007StatutMembreDernière intervention25 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
AlKatou
Messages postés95Date d'inscriptionvendredi 7 février 2003StatutMembreDernière intervention28 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
alexbigfoug
Messages postés31Date d'inscriptiondimanche 11 mars 2007StatutMembreDernière intervention25 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...