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

C# Discussion :

Vitesse d'initialisation d'un listview avec imagelist


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2010
    Messages : 22
    Par défaut Vitesse d'initialisation d'un listview avec imagelist
    Bonjour,
    j'ai une Listview avec une imageList. Le problème est que l'inistialisation de la listview met une vingtaine de secondes à cause de l'imagelist(150 photos a charger).
    Pour rendre la chose plus rapide, j'ai penser créer les vignettes des photos, ce qui éviterais une tâche assez lourde a mon appli. ( Les photos font jusqu'à 5 Mo). Mais avant de tester cela, j'aimerais des avis si cela vaut réellement le coup. (je dois modifier meme la generation d'un document xml de mon appli -> beaucoup de travail et de sources d'erreurs).

    J'ai regardé du coté également de la virtualisation de cette listview mais la virtualisation ne prend pas en charge l'imagelist.

    J'ai créé un classe héritant de la classe listview permettant de créer un évènement pour le déplacement de la scrollbar afin de ne pas charger les items non visibles mais la j'ai des erreurs et le defilement n'est plus fluide et si l'on bouge la scrollbar de trop, tout plante.

    J'ai également regarder pour la création d'un thread qui ajouterais les image a l'imagelist, mais là encore erreur.

    Si quelqu'un à une idée se serait cool ^^. Merci d'avance.

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    pour charger le listview, il convient de faire .beginupdate avant les items.add et .endupdate à la fin, ce qui évite des calcules de rafraichissement
    tenter aussi .suspendlayout et .resumelayout
    voir s'il y a pas un beginupdate sur l'imagelist aussi

    sinon voir avec ou sans image si le temps est radicalement différent, dans ce cas tu peux faire des miniatures à l'exécution pour charger l'image list, tout en gardant tes images de 5Mo à l'origine
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2010
    Messages : 22
    Par défaut
    En mettant en commentaire la ligne du imagelist.add() réduit de plus de 10 fois le temps d'initialisation mais créé les miniatures va réduire beaucoup le temps de chargement ? (J'ai pas envie de modifier tout mon code pour rien ^^)

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    le principe c'est de tester ...

    mais sinon c'est de la logique, quand on développe on essaye un minimum d'optimiser le truc
    si tu veux afficher des miniatures en 64x64 pixels soit 4k pixels, c'est étrange d'utiliser une photo de 10M pixels ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. [A-03] Problème avec imagelist et listview
    Par PokPok dans le forum IHM
    Réponses: 1
    Dernier message: 15/01/2009, 19h57
  2. Initialisation d'un arbre avec liste
    Par Naruto_kun dans le forum C
    Réponses: 15
    Dernier message: 02/01/2006, 22h43
  3. probleme avec imagelist
    Par kivoch dans le forum Composants VCL
    Réponses: 2
    Dernier message: 11/12/2005, 17h22
  4. Remplir une ListView avec une BD
    Par manikou dans le forum MFC
    Réponses: 1
    Dernier message: 17/05/2005, 09h48
  5. Réponses: 5
    Dernier message: 17/05/2005, 09h34

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