Problème avec Bitmap [Résolu]

Signaler
Messages postés
157
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
25 juillet 2018
-
Messages postés
157
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
25 juillet 2018
-
Bonjour, depuis un timer si je "dim" une bitmap celui ci me bouffe petit à petit toutes ma ram :

  Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim newImage = New Bitmap(850, 850)       
  End Sub


Par contre pour n'importe quel autre composant aucun problème. Jusqu’à présent je pensais que le dim recréé la variable mais apparemment non avec un bitmap.

Ici le même code mais avec une picturebox pas de problème :
  Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
       Dim pic As New PictureBox    
  End Sub


J'ai bien pensais à faire un dispose() sur le "newImage" mais, sa me fait planté ma picturebox quand je veux lui attribuer l'image (avant le dispose bien sûr).

Une idée pourquoi le bitmap s'accumule à chaque boucle du timer ? Puis comment faire pour vider le bitmap sans me faire planter ma picturebox ?

Merci d'avance.

9 réponses

Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
Salut
pas de problème car ton pic est vide
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
       Dim pic As New PictureBox    
  End Sub


mais si tu charges ton pic

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
       Dim pic As New PictureBox  
        pic.Image = New Bitmap("c\blabla\toto.jpg")  
  End Sub
Messages postés
157
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
25 juillet 2018
3
Donc si je comprend bien a chaque Dim il me réaloue une image dans la Ram. Je vais essayé de faire une variable global pour ne pas en créer 56 million de million de million de milliard de million si le soft reste ouvert la journée. Enfin je vous tiens au courant psq c'est le bordel avec les graphiques.
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
peut etre ainsi

si j'écris
 Private myimage As New Bitmap(Application.StartupPath & "\im1.jpg")
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim pic As New PictureBox
        pic.Image = myimage
      End Sub


la mémoire n'augmente pas

Que veux tu faire ?
charger à chaque tick une nouvelle image ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
228
Bonjour,
Combien d'images de cette taille insères-tu ainsi sans les supprimer ? Chacune réserve en mémoire un sacré lot !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
157
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
25 juillet 2018
3
Salut ucfoutu, pour répondre à ta question, temps que le programme est ouvert le timer tourne ! Tu imagine donc bien que au bout de quelques seconde avec un interval à 10, l'application pèse plus de 1Go
Messages postés
157
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
25 juillet 2018
3
Oui, à chaque boucle du timer il y a un draw graph qui se met en route et qui actualise la picture box
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
228
Ben ... pourquoi charger un nouvel objet à chaque tick, dans ce cas ??? Puisque tu n'en utilises qu'un, finalement ?


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
157
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
25 juillet 2018
3
Parce que j'ai pas pensais pas que sa allé charger un nouvel élément j'ai la fâcheuse habitude de créer des élément à tous bout de champs.

Mais par contre j'ai pas trouvé de méthode pour clear un bitmap ? Pour le remettre vierge quoi sans le disposed cette fonction me serrait bien utilise.
Messages postés
157
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
25 juillet 2018
3
Edit: Heu pour ma question je pense avoir trouvé Source. Avec un graphic.clear(). enfin ça à l'air de fonctionner.