IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

PictureBox avec image volatile au 1er coup


Sujet :

VB.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 355
    Points : 118
    Points
    118
    Par défaut PictureBox avec image volatile au 1er coup
    Bonjour à tous

    Depuis quelques mois, je me suis lancé dans VB.Net et je commence à faire des programmes (en bénéficiant parfois de votre aide) avec des images.
    Là, j'ai un petit problème, à savoir que lors d'une première utilisation de "DrawImage" dans un PictureBox, l'image se dessine bien et apparait dans mon contrôle, puis disparrait au bout d'environ 2 secondes.
    Si je relance la routine une deuxième fois, l'image reste cette fois définitivement.
    Voici mon petit code pour les fûtés que vous êtes.
    Quelqu'un a-t-il déja rentontré ce problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Public Class Form1
        Public g As Graphics, img As Image
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim g = PictureBox1.CreateGraphics
            img = Image.FromFile("C:\Toto.jpg")
            g.DrawImage(img, 0, 0, PictureBox1.Width, PictureBox1.Height)
        End Sub
    End Class
    Merci de votre réponse.

    Claude Azoulai

  2. #2
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    C'est étrange car j'ai pris ton code en créant un bouton et une picturebox et cela marche très bien.

  3. #3
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    Sinon, tu peux faire cela également pour le même résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            Dim bmp As Bitmap
            bmp = Image.FromFile("C:\Toto.jpg")
            PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
            PictureBox1.Image = bmp

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 355
    Points : 118
    Points
    118
    Par défaut
    Merci à methylene

    Pour répondre à ton deuxième message, je ne veux pas utiliser cette méthode car je prévois de visualiser des photos qui bougent dans le PictureBox.
    En ce qui concerne ton premier message, cela me rassure sur Visual Basic 2008 et je vais continuer à chercher plus avant.
    Je ne valide pas immédiatement "Résolu" des fois que quelqu'un d'autre a eu le même problème.
    Merci de ton aide.

    Claude Azoulai

  5. #5
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    Une image qui bouge, c'est à dire du gif ? Parce que ma méthode marche très bien avec du gif, et les images sont animées.

    Sinon au lieu de devoir aller chercher ton image, met la directement dans My.Ressources, c'est plus pratique

    Enfin pense à la balise résolu ->>

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 291
    Points : 390
    Points
    390
    Par défaut
    Bonjour Claude,

    Effectivement avec le code que tu utilise il y a un petit soucis.
    Lorsque tu dessine avec le graphics d'un picturebox obtenu par creategraphic tu ne dessine pas sur le même graphics que celui générer par l'événement PAINT du pictureBox. Car GDI+ utilise la technique du DC en mémoire (cf la doc .NET sur à l'attention des programmeur VB6 pour la partie graphique: la propriété autoredraw n'existe plus sous .Net car le bitmap est toujours permanent) en fait le bitmap permanent est celui de l'événement PAINT.

    Donc pour rendre permanent ton bitmap tu dois l'instancier dans l'événement PAINT du picturebox. Ce qui oblige à charger le bitmap à chaque mise à jour de l'écran !! Mais rassure toi il y a des astuces.

    Si on utilise que GDI+ et pas une dll externe (en référence à ton précédent message). :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Public Class Form1
        Private bmp As Bitmap
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            bmp = New Bitmap("C:\T0TO.jpg")
            PictureBox1.Refresh()
        End Sub
     
        Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
     
            If bmp Is Nothing Then Exit Sub
     
            Dim p As New Point(0, 0)
            e.Graphics.DrawImage(bmp, p)
     
        End Sub
    End Class

  7. #7
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    C'est bizarre car je n'ai pas ce soucis chez moi, ça marche nikel .

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 291
    Points : 390
    Points
    390
    Par défaut
    Bonjour,

    C'est bizarre car je n'ai pas ce soucis chez moi, ça marche nikel .
    Avec le code que tu utilise (le premier donné par Claude) essaye de masquer ta fenêtre et de la faire réapparaître.

  9. #9
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    Dans ce cas là c'est normal puisque l'image n'est pas enregistré, et vu qu'il dessine une nouvelle image à partir de son image source, étant donné que la picturebox va afficher cette nouvelle image, si l'image n'est pas sauvé elle disparait forcément à un changement d'affichage.

    Je n'avais pas cerné directement le problème, merci :-)

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 355
    Points : 118
    Points
    118
    Par défaut
    Merci à Geo2A

    Excuse moi si j'ai mis du temps à te répondre, mais mon ordinateur principal est tombé en rade (Checksum error du BIOS).
    J'ai utilisé ton code, et ça fonctionne bien (même si je dois encore en apprendre beaucoup sur le sujet), j'en suis ravis.

    Claude Azoulai

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Sauvegarder l'image d'un picturebox avec les superpositions!
    Par iVarlix dans le forum Windows Forms
    Réponses: 12
    Dernier message: 14/04/2014, 15h37
  2. [Débutant] Sauvegarde image PictureBox avec Image.Save
    Par sergelagier dans le forum Windows Forms
    Réponses: 9
    Dernier message: 09/05/2013, 18h50
  3. Réponses: 7
    Dernier message: 03/09/2011, 15h11
  4. Réponses: 3
    Dernier message: 26/05/2010, 17h45
  5. boîte de dialogue avec image de fond + texte
    Par Eugénie dans le forum MFC
    Réponses: 13
    Dernier message: 31/08/2004, 13h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo