begin process at 2012 02 11 11:56:13
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > MSCHART VERS BMP : LA SOLUTION

MSCHART VERS BMP : LA SOLUTION


 Information sur la source

Note :
9 / 10 - par 2 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Niveau :Initié Date de création :28/07/2004 Vu :5 200

Auteur : renardeau

Ecrire un message privé
Site perso
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

Exportation d'un graphique MSChart vers un fichier BMP
Je l'ai cherché longtemps, le voici pour votre meilleur plaisir


Source

  • 'Alors qu'un MSChart est dans votre fenêtre,
  • 'vous crééer un bouton dans lequel vous mettez
  • ' le code suivant
  • 'REM : le MSChart s'appelle : MSChart
  • ' Sauvegarde de l'image
  • MSChart.EditCopy
  • Call SavePicture(Clipboard.GetData, App.Path & "\Image.bmp")
  • ' On efface le clipboard
  • Clipboard.Clear
'Alors qu'un MSChart  est dans votre fenêtre, 
'vous crééer un bouton dans lequel vous mettez
' le code suivant
'REM : le MSChart s'appelle : MSChart



      ' Sauvegarde de l'image
      MSChart.EditCopy
      Call SavePicture(Clipboard.GetData, App.Path & "\Image.bmp")

      ' On efface le clipboard
      Clipboard.Clear

 Conclusion

je ne pige pas tout mais le principal c'est que ca fonctionne non ?


 Sources du même auteur

Source avec Zip Source avec une capture GRAPH EN TEMPS RÉEL (MSCHART)

 Sources de la même categorie

Source avec une capture GRAPH PHP COURBE DE CHARGE par s.defaye
Source avec Zip Source avec une capture BOULE DE CRISTAL par BLUEBIBUBBLE
VB6 - DÉPLACEMENT D'UN CONTRÔLE SUR UN SEGMENT DE DROITE DÉL... par ucfoutu
Source avec Zip Source .NET (Dotnet) APPLICATION DE DESSIN par fsafsafsaf
Source avec Zip Source avec une capture Source .NET (Dotnet) MERGEIMAGES par Le Pivert

Commentaires et avis

Commentaire de Scalpweb le 29/07/2004 01:11:06

Oui, c le principal, ;-)

Commentaire de cauroir le 29/07/2004 10:32:15

merci pour ce source simple mais tres utile

Commentaire de cauroir le 29/07/2004 10:33:47

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

Commentaire de renardeau le 29/07/2004 12:44:56

certainement...

Moi, pour ma part, je recherche une source qui me permettrait d'écrire sur cette image généré..

a bon entendeur...

Commentaire de renardeau le 29/07/2004 12:54:48

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.

Commentaire de sibi12 le 31/07/2004 19:09:09

Il doit y avoir moyen de faire ca plus proprement avec les device context. je vais essayer de vous pondre ca... ;)

Commentaire de sibi12 le 03/08/2004 16:36:51

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

Commentaire de renardeau le 03/08/2004 22:17:34

pourrais-tu expliquer pourqoui cette solution serait meilleure ?

elle a pleins de déclarations supplémentaire et pleins de truc en plus... (API, ...)

Commentaire de sibi12 le 04/08/2004 09:44:34

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

Commentaire de Renfield le 04/08/2004 10:04:36 administrateur CS

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 ;-)

Commentaire de Jielde le 27/06/2006 23:03:27

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.

Commentaire de frank241 le 30/10/2006 13:44:04

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

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,482 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales