Faire un savepicture en vb.net

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 697 fois - Téléchargée 40 fois

Contenu du snippet

Encore une fonction utile de Vb6 qui a disparu de VB.Net : le SavePicture sur un contrôle PictureBox. Pour reproduire cette foncitonnalité sous VB.net, il faut procéder de la manière suivante :

Source / Exemple :


Dans le cas d'une pictureBox contenant une image, la solution est simple :

pictureBox.Image.save("c:\fichier.gif",  ImageFormat.Gif)

Dans le cas d'une pictureBox contenant un objet Graphics qui subit des modifications (dessins etc.) :

        Dim bitMap As New Bitmap(pictureBox1.width, pictureBox1.height)
        Dim g as Graphics = Graphics.FromImage(bitMap)
        Try
            g.Clear(Color.White)
            '
            '  Insérer ici les commandes de dessin sur g
            '  (si dessin effectué avant, passer g en paramètre à la sub ou             
            '   utiliser un g de classe)
            '
            bitMap.Save("C:\fichier.gif", ImageFormat.Gif)
        Finally
            g.Dispose
            bitMap.Dispose()
        End Try

Conclusion :


Pour que le code ci-dessus fonctionne, il faut naturellement un contrôle pictureBox, mais surtout il faut déclarer l'import des namespaces :

Imports System.Drawing
Imports System.Drawing.Imaging

Vous pouvez sauver l'image du pictureBox au format que vous voulez, en modifiant le bitMap.save avec la valeur ImageFormat adéquat.

Solution tirée de DrGUI.Net #3, car pas dans la doc msdn :
http://msdn.microsoft.com/library/en-us/dnguinet/html/drguinet3code.asp?frame=true#top_3

A voir également

Ajouter un commentaire

Commentaires

Messages postés
62
Date d'inscription
vendredi 19 janvier 2007
Statut
Membre
Dernière intervention
29 juin 2008

Bon ben j'ai trouvé la solution à mon problême. Pour ceux qui rencontrerez le même problême il faut éviter de mettre des commandes sur g avec un stylet de la même couleur que le g.clear(Color.lenomDeLaCouleur) et penser à rajouter:

Imports System.Drawing
Imports System.Drawing.Imaging

De plus il faut utiliser le Try dans une procédure ou une méthode. Merci quand même ;-) 0:44 h du matin et les yeux tout rouge
Messages postés
62
Date d'inscription
vendredi 19 janvier 2007
Statut
Membre
Dernière intervention
29 juin 2008

Ca enregistre bien une image mais elle est soit transparente soit toute noire. Est ce dut au fait que la taille de ma PictureBox est plus petite que celle de ma Bitmap ou bien au fait que je ne mette pas ceci:
g.Dispose
bitMap.Dispose()
Merci à celui qui peut me répondre ;-))
Utilisateur anonyme
Ca marche !

Je te remercie bcp pour ton aide.
Messages postés
16
Date d'inscription
mardi 28 novembre 2000
Statut
Membre
Dernière intervention
6 juillet 2007

Ben essaye de faire :

dim lacopie as new PictureBox(params, dont taille de la pb d'origine)
lacopie = Panel1.controls(nb)

et ensuite, comme la copie est une pb, elle possède la propriété Image, donc tu peux aller la sauver.
Utilisateur anonyme
Le pb, c'est que je ne peut pas acceder a un attribut qui n'existe pas de la classe controls, donc meme pour en faire une copie je peut pas faire lacopie.Image=Panel1.controls(nb).Image ou autre specifique au picturebox.

Mais merci d'avoir répondu.
Afficher les 13 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.