Problème avec Bitmap

Résolu
Guillamue06 Messages postés 157 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 11 juillet 2022 - 28 nov. 2012 à 16:10
Guillamue06 Messages postés 157 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 11 juillet 2022 - 28 nov. 2012 à 19:34
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

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
28 nov. 2012 à 17:13
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
3
Guillamue06 Messages postés 157 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 11 juillet 2022 4
28 nov. 2012 à 17:31
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.
3
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
28 nov. 2012 à 17:31
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 ?
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 nov. 2012 à 16:20
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Guillamue06 Messages postés 157 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 11 juillet 2022 4
28 nov. 2012 à 16:54
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
0
Guillamue06 Messages postés 157 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 11 juillet 2022 4
28 nov. 2012 à 18:05
Oui, à chaque boucle du timer il y a un draw graph qui se met en route et qui actualise la picture box
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 nov. 2012 à 18:45
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
0
Guillamue06 Messages postés 157 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 11 juillet 2022 4
28 nov. 2012 à 19:25
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.
0
Guillamue06 Messages postés 157 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 11 juillet 2022 4
28 nov. 2012 à 19:34
Edit: Heu pour ma question je pense avoir trouvé Source. Avec un graphic.clear(). enfin ça à l'air de fonctionner.
0
Rejoignez-nous