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

Langage Delphi Discussion :

Delphi 2007 Afficher des images JPEG dans une Stringrid


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 27
    Points : 22
    Points
    22
    Par défaut Delphi 2007 Afficher des images JPEG dans une Stringrid
    Bonjour à tous et toutes,

    Je m'adresse à travers ce post aux cracks de l'optimisation sous Delphi...Voilà le pb :

    Je dois afficher des images au format JPEG dans une grille de 64 colonnes sur 32 lignes... Jusque là pas de pb, la chose fonctionne avec la méthode que j'utilise, mais au niveau logique et optimisation; je me dis que c'est peut être une méthode de bricolo. Voici donc un extrait du code que j'utilise pour afficher ces 2048 images dans la grille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ...
      for R := 0 to 31 do
        begin
          for C := 0 to 63 do
            begin
              Img := TJpegImage.Create; data := Buffer[Ofs];
              Img := Get_Jpg(Rx[data]);
              FrmBD.GrdMain.Canvas.StretchDraw(FrmBD.GrdMain.CellRect(Cl R), Img);
              inc(Ofs); Img.Free;
            end;
        end;
    ...
    On s'aperçoit dans cet extrait de code, que les instructions : Img := TJpegImage.Create; et Img.Free; sont exécutées 2048 fois !...

    Question : Est-ce dans ce cas précis nécessaire ? et n'est il pas suffisant de créer l'objet Img 1 seule fois - avant la boucle for R..., puis de le libérer l'objet à la fin ???

    Dans le second cas, est-ce que je ne vais pas aboutir à la création en mémoire de 2048 objets Img ce qui ne serait quand même pas le top du top...

    Quelques bonnes suggestions de votre part seraient les bienvenues.

    Merci et bonne continuation.

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    Par défaut
    Les 2 boucles imbriquées sont inutiles . Ce n'est pas à toi de forcer l'affichage de tes 2048 images, mais au StringGrid de te demander de repeindre certaines cellules. Le StringGrid implémente pour cela l'événement OnDrawCell.

    Au niveau de la création des jpeg, Get_Jpeg te renvoi manifestement un TJpegImage. Img := TJpegImage.Create ne sert donc à rien et qui plus est ne sera pas détruit puisque Img est modifié après coup .

    Dans ta boucle, tu crée donc 4096 TJpegImage, mais n'en détruit que 2048 !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    Salut Andonotor et un grand merci ... Voici là des explication plus que claires.

    Je vois en effet que je cherchais midi à 14h. Je vais immédiatement adopter ta solution.

    Encore merci et cordiales salutations.

    Pour moi le sujet est clos.


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

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/03/2014, 18h45
  2. afficher une image JPEG dans une forme
    Par madjid90 dans le forum Débuter
    Réponses: 5
    Dernier message: 10/07/2010, 14h58
  3. Réponses: 6
    Dernier message: 12/03/2010, 11h19
  4. [SVG] Afficher des images jpeg dans un rectangle sous firefox
    Par Spiderben dans le forum Autres langages pour le Web
    Réponses: 0
    Dernier message: 02/08/2007, 11h10
  5. [DBase][BDE]Insérer des images JPeg dans un table.u
    Par migauvin dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/08/2004, 12h03

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