frank241
Messages postés3Date d'inscriptiondimanche 2 mai 2004StatutMembreDernière intervention30 octobre 2006 30 oct. 2006 à 13:44
Salut,
Merci pour le code.
Je l'utilise pour imprimer un graph avec des dimensions précises.
'Config du printer
Printer.Orientation = vbPRORLandscape 'Paysage
Printer.ScaleMode = vbMillimeters
'Récupération du résultat du code précédent
picGraph.Picture = picGraph.Image
'Impression
Printer.PaintPicture picGraph, x, y, largeur, hauteur
'Lancement impression
Printer.EndDoc
Il y a surement plus simple.
Cordialement
cs_Jielde
Messages postés226Date d'inscriptionmardi 17 octobre 2000StatutMembreDernière intervention 1 décembre 2010 27 juin 2006 à 23:03
Salut,
Merci beaucoup pour cette astuce bien pratique.
Par contre lorsque je pose un control devant man MSChart, il est dessiner aussi dans mon BMP, pourkoi ?
merci.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 4 août 2004 à 10:04
D'accord avec sibi12..... ca évite d'aller manipuler le presse-papier.....
le but, c'est que ca enregistre une image, si a chaque fois qu'on le fait on pers ce que l'on avait copié..... on va pas être très très contents, ;-)
les API sont très très utiles pour booster un peu VB.... il ne faut pas en avoir peur, et même se familiariser avec ;-)
sibi12
Messages postés337Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention15 avril 2006 4 août 2004 à 09:44
En fait ta solution passe par le presse papier ce qui n'est pas toujours du plus "propre" vu que l'utilisateur peut avoir mis quelque chose dedans.
Ensuite tu peux retravailler l'image en plaçant le texte que tu veux dessus.
Si les déclaration te dérange tu risque d'être vite limité en VB ;).
Tu peux tjs supprimer les constantes et remplacer le SRCCOPY ds l'appel de la fonction BitBlt par &hCC0020 ce qui ne te laisse que 2 malheureux appels ;)
On peux aussi mettre GetDC et BitBlt sur la même ligne. ce qui donne :
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Sub Command1_Click()
Picture1.AutoRedraw = True
BitBlt Picture1.hdc, 0, 0, MSChart1.Width, MSChart1.Height, GetDC(MSChart1.hwnd), 0, 0, &HCC0020 'Dessine le Chart dans Picture1
Picture1.CurrentX 5: Picture1.CurrentY 5 'Positionne le texte à écrire
Picture1.FontName = "Verdana" 'Choisi la police
Picture1.Print "XbY" ' écrit "XbY"
SavePicture Picture1.Image, "C:\Image.bmp" 'Sauve l'image
End Sub
cs_renardeau
Messages postés44Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention 5 décembre 2009 3 août 2004 à 22:17
pourrais-tu expliquer pourqoui cette solution serait meilleure ?
elle a pleins de déclarations supplémentaire et pleins de truc en plus... (API, ...)
sibi12
Messages postés337Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention15 avril 2006 3 août 2004 à 16:36
voilà suffit de mettre un mschart un pitcturebox (qui peux etre invisible) et un boutton et voilà le code
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Const SRCAND &H8800C6 ' (DWORD) dest source AND dest
Private Const SRCCOPY &HCC0020 ' (DWORD) dest source
Private Const SRCERASE &H440328 ' (DWORD) dest source AND (NOT dest )
Private Const SRCINVERT &H660046 ' (DWORD) dest source XOR dest
Private Const SRCPAINT &HEE0086 ' (DWORD) dest source OR dest
Private Sub Command1_Click()
Picture1.AutoRedraw = True
dc = GetDC(MSChart1.hwnd)
BitBlt Picture1.hdc, 0, 0, MSChart1.Width, MSChart1.Height, dc, 0, 0, SRCCOPY
Picture1.CurrentX 5: Picture1.CurrentY 5
Picture1.FontName = "Verdana"
Picture1.Print "XbY"
SavePicture Picture1.Image, "C:\Image.bmp"
End Sub
sibi12
Messages postés337Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention15 avril 2006 31 juil. 2004 à 19:09
Il doit y avoir moyen de faire ca plus proprement avec les device context. je vais essayer de vous pondre ca... ;)
cs_renardeau
Messages postés44Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention 5 décembre 2009 29 juil. 2004 à 12:54
il servirait à indiquer que cette image a été générée par mon programme.
Je ne désire pas le mettre dans le titre car cela diminue de façon non négligeable le titre de mon dessin.
cs_renardeau
Messages postés44Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention 5 décembre 2009 29 juil. 2004 à 12:44
certainement...
Moi, pour ma part, je recherche une source qui me permettrait d'écrire sur cette image généré..
a bon entendeur...
cauroir
Messages postés27Date d'inscriptionvendredi 18 octobre 2002StatutMembreDernière intervention 2 août 2007 29 juil. 2004 à 10:33
Ce qui aurait ete mieux : le sauver en jpg !
Je crois qu'il y a des sources qui convertissent le BMP en JPG sur ce site
cauroir
Messages postés27Date d'inscriptionvendredi 18 octobre 2002StatutMembreDernière intervention 2 août 2007 29 juil. 2004 à 10:32
merci pour ce source simple mais tres utile
Scalpweb
Messages postés1467Date d'inscriptionsamedi 13 mars 2004StatutMembreDernière intervention 5 mai 20104 29 juil. 2004 à 01:11
30 oct. 2006 à 13:44
Merci pour le code.
Je l'utilise pour imprimer un graph avec des dimensions précises.
'Config du printer
Printer.Orientation = vbPRORLandscape 'Paysage
Printer.ScaleMode = vbMillimeters
'Récupération du résultat du code précédent
picGraph.Picture = picGraph.Image
'Impression
Printer.PaintPicture picGraph, x, y, largeur, hauteur
'Lancement impression
Printer.EndDoc
Il y a surement plus simple.
Cordialement
27 juin 2006 à 23:03
Merci beaucoup pour cette astuce bien pratique.
Par contre lorsque je pose un control devant man MSChart, il est dessiner aussi dans mon BMP, pourkoi ?
merci.
4 août 2004 à 10:04
le but, c'est que ca enregistre une image, si a chaque fois qu'on le fait on pers ce que l'on avait copié..... on va pas être très très contents, ;-)
les API sont très très utiles pour booster un peu VB.... il ne faut pas en avoir peur, et même se familiariser avec ;-)
4 août 2004 à 09:44
Ensuite tu peux retravailler l'image en plaçant le texte que tu veux dessus.
Si les déclaration te dérange tu risque d'être vite limité en VB ;).
Tu peux tjs supprimer les constantes et remplacer le SRCCOPY ds l'appel de la fonction BitBlt par &hCC0020 ce qui ne te laisse que 2 malheureux appels ;)
On peux aussi mettre GetDC et BitBlt sur la même ligne. ce qui donne :
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Sub Command1_Click()
Picture1.AutoRedraw = True
BitBlt Picture1.hdc, 0, 0, MSChart1.Width, MSChart1.Height, GetDC(MSChart1.hwnd), 0, 0, &HCC0020 'Dessine le Chart dans Picture1
Picture1.CurrentX 5: Picture1.CurrentY 5 'Positionne le texte à écrire
Picture1.FontName = "Verdana" 'Choisi la police
Picture1.Print "XbY" ' écrit "XbY"
SavePicture Picture1.Image, "C:\Image.bmp" 'Sauve l'image
End Sub
3 août 2004 à 22:17
elle a pleins de déclarations supplémentaire et pleins de truc en plus... (API, ...)
3 août 2004 à 16:36
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Const SRCAND &H8800C6 ' (DWORD) dest source AND dest
Private Const SRCCOPY &HCC0020 ' (DWORD) dest source
Private Const SRCERASE &H440328 ' (DWORD) dest source AND (NOT dest )
Private Const SRCINVERT &H660046 ' (DWORD) dest source XOR dest
Private Const SRCPAINT &HEE0086 ' (DWORD) dest source OR dest
Private Sub Command1_Click()
Picture1.AutoRedraw = True
dc = GetDC(MSChart1.hwnd)
BitBlt Picture1.hdc, 0, 0, MSChart1.Width, MSChart1.Height, dc, 0, 0, SRCCOPY
Picture1.CurrentX 5: Picture1.CurrentY 5
Picture1.FontName = "Verdana"
Picture1.Print "XbY"
SavePicture Picture1.Image, "C:\Image.bmp"
End Sub
31 juil. 2004 à 19:09
29 juil. 2004 à 12:54
Je ne désire pas le mettre dans le titre car cela diminue de façon non négligeable le titre de mon dessin.
29 juil. 2004 à 12:44
Moi, pour ma part, je recherche une source qui me permettrait d'écrire sur cette image généré..
a bon entendeur...
29 juil. 2004 à 10:33
Je crois qu'il y a des sources qui convertissent le BMP en JPG sur ce site
29 juil. 2004 à 10:32
29 juil. 2004 à 01:11