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

Windows Forms Discussion :

Image et resource


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 13
    Points : 11
    Points
    11
    Par défaut Image et resource
    Bonjour a tous,

    Voila j'ai un programme qui fait ceci:

    au passage de la souris sur le "notifyicon", j'affiche une fenetre. Dans ce fenetre j'affiche une capture d'ecran.

    Pour réaliser la capture je m'appuie sur des fonction Win32 tel que BitBlt. Je libere correctement mes resources grace a DeleteDC, ReleaseDC et DeleteObject. Le probleme survient lorsque je charge l'image dans un type image grace à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image img = Image.FromHbitmap(hBitmap);
    Dès lors que j'appelle cette fonction mon programme prend facilement 8Mo de plus en mémoire. Par la suite ma fonction qui retourne cette image l'affiche dans une picturebox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myPictureBox.Image = CaptureEcran();
    Et comme j'appelle ce code a chaque fois que j'affiche ma fenetre, il me prend environ 8Mo de plus à chaque fois sans arret.
    j'ai donc pensé que si je faisais un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myPicture.Image.Dispose()
    cela aurait libéré les ressources avant de charger la nouvelle image, mais en fait cela n'a aucun impact semble t-il.

    Pourriez m'indiquer quelle est la manip ou à quoi est du ceci? Est-on obligé d'attendre que le GC libere la memoire, et dans ce cas c'est bete qu'une appli ou j'ai qu'une image a afficher me prenne 100Mo en mémoire a terme non?

    Je pense qu'il y a quelquechose a faire mais j'ai beua chercher je ne vois pas de solution efficace.

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Tu peux forcer le GC à collecter la mémoire inutilisée en faisant GC.Collect()
    Mais ne le fais pas trop souvent car ça mobilise beaucoup le processeur

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    merci d'avoir repondu. Je souhaitais eviter le GC.Collect autant que possible c'est pourquoi je ne l'avais pas fait.
    Finalement après une bonne nuit de sommeil et des reves en rapport avec mon code :p, j'ai trouvé d'ou venait le leak.
    J'avais une methode d'extension sur un type Image qui permet de redimensioner une image donc.
    Il fallait donc faire un image.Dispose() sur l'image originale avant de retourner la miniature, et la plus de probleme de resources.

    Merci quand mm!

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

Discussions similaires

  1. Load images from resources
    Par shayw dans le forum VB.NET
    Réponses: 1
    Dernier message: 03/07/2014, 17h06
  2. [Débutant] chargement d'une image SimpleButtonExport.Image dans resource
    Par denisdg dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/10/2012, 02h19
  3. Stockage d'Image via Resource.resx
    Par JBacK dans le forum VB.NET
    Réponses: 5
    Dernier message: 25/06/2010, 20h44
  4. Récupérer Image depuis resource
    Par Bluedeep dans le forum C#
    Réponses: 3
    Dernier message: 02/08/2007, 16h27
  5. Question basique : récuperer une Image en resource
    Par Bluedeep dans le forum Framework .NET
    Réponses: 2
    Dernier message: 02/08/2007, 16h25

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