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

Composants VCL Delphi Discussion :

Economie de mémoire pour plusieur images avec la même source


Sujet :

Composants VCL Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 39
    Points : 34
    Points
    34
    Par défaut Economie de mémoire pour plusieur images avec la même source
    Salut à tous,

    je développe une application de gestion téléphonique.
    j'ai décidé d'illustrer les lignes téléphoniques par un Panel qui contient des labels et une image.

    j'ai donc créé une classe pour générer les panels dynamiquement en fonction du nombre de lignes téléphoniques.

    Les fichiers source image sont dans le fichiers ressource.

    j'ai donc defini trois images de référence qui chargent les bons fichiers au démarage (Image_ready, image_connect , Image_disconnect)

    et voici ce que je fais pour essayer de ne pas prendre trop de mémoire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     ------procedure OnStatusChanger
    begin
            if Panel[i].status = Ready then
               Panel[i].image.picture := Image_ready.picture;
     
            if Panel[i].status = Connect then
               Panel[i].image.picture := Image_Connect.picture;
     
            if Panel[i].status = Disconnect then
               Panel[i].image.picture := Image_Disconnect.picture;
    end;
    je suis certain que ce n'est pas la meilleur méthode. de plus, depuis l'ajout des images, l'application rame parfois sur ( Win98 et WinMe)

    j'ai essayé d'être le plus clair possible. Merci d'avance.

  2. #2
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut Load
    Le plus simple si c'est le même fichier image serait d'avoir un seul contrôle Timage et quand tu en as besoin faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Image1.Picture.LoadFromFile('C:\Telephone.bmp');
    et si tu n'en a plus besoin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Image1.Picture:=nil; //*pouf*

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 39
    Points : 34
    Points
    34
    Par défaut
    non,
    j'ai de 2 à 20 images qui peuvent avoir sources differentes mais donc, il y aura toujours plusieurs images qui ont la même source.

    donc, j'ai trois images de réference, et je fais pointer leur source vers la source adéquate.

    je veux juste savoir s'il y a meilleure solution.

    je pense par contre que le fais de faire à chaque changement de source un "loadfromfile" va prendre trop de mémoire.

    Merci du coup de main.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 43
    Points : 52
    Points
    52
    Par défaut
    En utilisant des TImages il n'y a que deux solutions, le LoadFromFile (efectivement un peu lent) et le .picture:=

    Sinon il faut utiliser un autre composant tout bête avec une propriété ImageSource qui le fait pointer vers le TImage qu'il doit afficher, et dans la méthose Paint faire un draw de ImageSource.Picture.Graphic.
    C'est un composant qui va vite à faire et çà t'évitera de dupliquer l'espace mémoire utilisé par les images, parce que si je ne me trompe pas quand tu fais un Timage.Picture:=, il duplique les données de l'image.

  5. #5
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut!

    A mon avis, si tu veux éviter d'utiliser de la mémoire pour ces images, elles ne seront pas mémorisées! lol - Je m'explique: Si tu fais un déplacement ou redimensionnement de ta form, ou bien si une autre fenêtre cache une partie ou la totalité de ces images, elles ne seront pas réaffichées automatiquement lors de la restauration de la fenêtre! Tu devras alors ajouter dans l'évènement OnShow (ou OnPaint) de la form, une procédure chargée de redessiner tes images...

    à+
    De retour parmis vous après 10 ans!!

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 39
    Points : 34
    Points
    34
    Par défaut
    et bien,

    je pense que je vais utiliser la propriété ".image" pour faire référence.

    les images ont une moyenne de 2,5 KB, ce qui ne doit pas être dérangeant.

    Merci à tous.

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

Discussions similaires

  1. plusieurs combobox avec la même source
    Par ptitepo dans le forum VB.NET
    Réponses: 6
    Dernier message: 23/11/2008, 19h59
  2. Réponses: 6
    Dernier message: 03/04/2007, 20h40
  3. script pour déplacer image avec souris, pb avec Netscape
    Par jejerome dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/11/2006, 17h59
  4. Problème pour différencier plusieurs select avec le même nom
    Par vallica dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/04/2006, 11h35
  5. générer xml pour plusieurs images automatiquement
    Par tomagozo dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 12/04/2006, 17h56

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