L'image de mon PictureBox disparait...

Résolu
cs_PHILOUVB Messages postés 141 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 3 octobre 2010 - 4 juin 2009 à 20:26
cs_PHILOUVB Messages postés 141 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 3 octobre 2010 - 6 juin 2009 à 16:37
Bonjour

Mon problème est le suivant :
J'ai créé un picturebox dans lequel j'insère une portion d'une image contenue elle aussi dans un picturebox.
Pour cela j'utilise la fonction DrawImage

Cela donne le code suivant

ulCorner = New Point(0, 0)
urCorner = New Point(50, 0)
llCorner = New Point(0, 50)
destPara = New Point() {ulCorner, urCorner, llCorner}
srcRect = New Rectangle(20, 20, 100, 100)
newimage = PictureBox1.Image (contenant l'image de départ)

Je clique sur un bouton qui lance la procédure suivante
Me.PictureBox2.CreateGraphics.DrawImage(New Bitmap(newimage), destPara, srcRect, units)

Et cela fonctionne très bien.

Mon soucis est que si je réduit la fenetre Form pour la restaurer ensuite, mon image disparait.
Et là j'ai besoin de vous !!!

Je ne m'explique pas pourquoi l'image disparait.
Avez-vous une idée ??

Merci beaucoup par avance

2 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
4 juin 2009 à 21:42
Bonsoir,

La méthode PictureBox.CreateGraphics crée un graphique à partir du contôle lui-même. C'est l'équivalant de :

Dim g As New Graphic = Graphics.FromHwnd(PictureBox.Handle)

Elle déssine dans le contrôle directement et non pas dans une image qui se place dans le contrôle, de ce fait, quand celui-ci doit être redessiné (Suite à une sortie de l'écran, il appelle la méthode "Paint" en te passant en paramètre une instance de la classe PaintEventArgs, contenant le graphique du contrôle.

Place ta procédure dans celui-ci ou bien suis la méthode suivante :

Ce qu'il faut que tu fasse, c'est dessiner dans une Bitmap et insérer celle-ci dans ton PictureBox.

Dim _bmp As New Bitmap(Width, Height)
Dim g As Graphics = Graphics.FromImage(_bmp)

g.DrawImage ....

PictureBox1.Image = _Bmp

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
3
cs_PHILOUVB Messages postés 141 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 3 octobre 2010
6 juin 2009 à 16:37
Un grand merci pour tes explications.
Cela fonctionne très bien maintenant

Encore merci

PhilouVB
3
Rejoignez-nous