Image gommée par une autre appli [Résolu]

Signaler
Messages postés
18
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
9 août 2012
-
Messages postés
18
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
9 août 2012
-
Bonjour,

Je construis une image dans un PictureBox avec le code suivant (VB2008Express) :

Dim graphic As Graphics = Image.CreateGraphics()
...

MonStylo.Color = Couleur(Ind_Color) ' Tableau de couleurs
graphic.DrawEllipse(MonStylo, X, Y, D, D)

MonPinceau.Dispose()
MonPinceau = New SolidBrush(xxxxx)
graphic.FillEllipse(MonPinceau, X, Y, D, D)

Si je reste sur mon appli, l'image est OK.
Mais lorsque je bascule sur une appli pour ensuite revenir mon appli sur laquelle j'ai mon image, celle-ci a été effacée (éventuellement partiellement), comme si l'appli sur laquelle j'avais basculée avait joué le rôle de gomme.

Comment peut-on figer l'image une fois construite?
Mes recherches sont restées pour l'instant infructueuses.

Merci d'avance
Olivier

6 réponses


bonsoir,
il est plus simple de dessiner sur une bitmap puis de la charger ensuite dans le controle.
de plus, cette bitmap peut etre sauvée facilement sur le disque.
        'création d'un nouveau bitmap
        Dim b As Bitmap = New Bitmap(200, 200)
        'création de l'outil de dessin
        Dim graphic As Graphics = Graphics.FromImage(b)
        'dessin sur le bitmap
        graphic.DrawEllipse(New Pen(Color.DarkMagenta), 10, 10, 70, 80)
        'sauvegarde du bitmap
        b.Save(Application.StartupPath & "\test.bmp", Imaging.ImageFormat.Bmp)
        'envoi au picturebox
        PictureBox1.Image = b.Clone
        'libération des ressources
        graphic.Dispose()
        b.Dispose()
Messages postés
18
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
9 août 2012

En fait, voilà ce qui se passe :

http://bernard.o.perso.neuf.fr/BugXPSP3.jpg

Le phénomène se passe sur un poste XP mais ça fonctionne correctement en Vista...

A l'aide...
Messages postés
18
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
9 août 2012

Bonjour à tous,

Pour vous aider à m'aider, voici la suite du problème :

Dim graphic As Graphics = MonPictureBox.CreateGraphics()
graphic.Clear(Color.White)
graphic.DrawLine(MonStylo, 220, 10, 220, 440)
graphic.DrawLine(MonStylo, 10, 220, 440, 220)

Boucle sur :
MonStylo.Color = CZ_Couleur(Ind_Color)
graphic.DrawEllipse(MonStylo, X, Y, D, D)
graphic.FillEllipse(MonPinceau, X, Y, D, D)
graphic.Flush() ' Pas sur que ça serve à quelque chose...

Faut pas croire, j'ai cherché une solution en copiant l'image du PictureBox dans une image BitMap.
http://msdn.microsoft.com/fr-fr/library/ktx83wah%28v=VS.100%29.aspx

Dim MonBitmap As New Bitmap(450, 450)
MonBitmap = MonPictureBox.Image
If Not (MonBitmap Is Nothing) Then
MonBitmap.Save("C:\Essai.bmp")
Else
MsgBox("Pas d'image :-(")
End If

Le problème est que MonBitMap est vide. Je ne sais pas comment :
* Etape 1 : Copier le l'image du PictureBox
* Etape 2 : sauvegarder cette image dans un fichier

Si quelqu'un pouvait se pencher sur mon problème... Merci d'avance
Olivier
Messages postés
18
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
9 août 2012

Bonjour,

Merci pour cette aide précieuse. Je viens de tester, et ça marche .

Juste une petite remarque : je trouvais sympa de voir l'image se construire au fur et à mesure de l'itération de ma boucle. Avec cette nouvelle méthode, le résultat apparait à la fin uniquement. J'ai essayé de mettre le "PictureBox1.Image = b.Clone" dans la boucle mais cela ne change rien. Dommage.

A+
Olivier

on peut aussi se servir de l'événement Paint du picturebox afin de dessiner dessus à chaque rafraichissement du contrôle. de cette façon, on le verra se dessiner en temps réel.

    Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
        Dim graphic As Graphics = e.Graphics
        graphic.DrawEllipse(New Pen(Color.DarkMagenta), 10, 10, 70, 80)
    End Sub


a bientôt.
Messages postés
18
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
9 août 2012

Bonjour,

Suite à un premier test, je ne suis pas sûr que cette option me convienne. Je regarderai cela un peu plus tard. Je vais me concentrer sur le coeur de mon appli...

Merci
A+
Olivier