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 Presentation Foundation Discussion :

Affichage d'un grand nombre d'images - performances


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut Affichage d'un grand nombre d'images - performances


    Quel est le meilleur moyen d'afficher un grand nombre d'images (~1500) en WPF sans sacrifier les performances ? Pour l'instant j'ai essayé avec un WrapPanel et bien que pour <20 images c'est nikel ce qu'il me faut, à peine arrivé à 100 images ça devient super saccadé et le processeur en prends un coup (100% de CPU à chaque défilement).

    Y a t-il un meilleur moyen pour le faire ?

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Dans ton WrapPanel, tu as pensé à modifier le template pour utiliser un VirtualizingStackPanel ? Car avec de la virtualization, tu devrais avoir de meilleures perf

  3. #3
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Mais je veux avoir un comportement où les élément s'arrange verticalement mais horizontalement aussi, ce que ne permet pas VirtualizingStackPanel ... me trompe-je ?

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 214
    Par défaut
    Effectivement, je suis pas sûr qu'avec un VirtualizingStackPanel tu es l'effet que tu veux.

    Tu peux jeter un œil par là, où l'auteur réaliser un panel virtualisé qui devrait correspondre à ce que tu cherches.

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par smyley Voir le message
    Mais je veux avoir un comportement où les élément s'arrange verticalement mais horizontalement aussi, ce que ne permet pas VirtualizingStackPanel ... me trompe-je ?
    Rien ne t'empêche de créer ton propre VirtualizingWrapPanel en te basant sur le même code

  6. #6
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Citation Envoyé par Jérem22 Voir le message
    Effectivement, je suis pas sûr qu'avec un VirtualizingStackPanel tu es l'effet que tu veux.

    Tu peux jeter un œil par là, où l'auteur réaliser un panel virtualisé qui devrait correspondre à ce que tu cherches.
    Quand j'essaye j'ai une erreur assez étrange (que ce soit dans le designer ou pendant l'exécution, bien que dans le projet d'exemple ça fonctionne pas au design mais ça marche à l'exécution) :
    La substitution des mesures de présentation de l’élément «*VirtualizingTilePanelSample.VirtualizingTilePanel*» ne doit pas renvoyer PositiveInfinity comme DesiredSize, même si Infinity est transmis sous forme de taille disponible.
    à System.Windows.UIElement.Measure(Size availableSize)
    à MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint)
    à System.Windows.Controls.ItemsPresenter.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint)
    à System.Windows.Controls.ContentPresenter.MeasureOverride(Size constraint)
    à System.Windows.Controls.ScrollContentPresenter.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV)
    à System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV)
    à System.Windows.Controls.Grid.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à System.Windows.Controls.ScrollViewer.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à System.Windows.Controls.Control.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à System.Windows.Controls.DockPanel.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint)
    à System.Windows.Controls.ContentPresenter.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à System.Windows.Controls.Decorator.MeasureOverride(Size constraint)
    à System.Windows.Documents.AdornerDecorator.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV)
    à System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV)
    à System.Windows.Controls.Grid.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à System.Windows.Controls.Border.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à System.Windows.Controls.Border.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à System.Windows.Controls.DockPanel.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à System.Windows.Controls.Border.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à System.Windows.Controls.Grid.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à System.Windows.Controls.Control.MeasureOverride(Size constraint)
    à MS.Internal.WindowControl.DesignTimeWindow.MeasureOverride(Size availableSize)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à MS.Internal.Designer.SimpleViewManager.DesignerBackground.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à System.Windows.Controls.Decorator.MeasureOverride(Size constraint)
    à Microsoft.Windows.Design.Interaction.DesignerView.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à MS.Internal.Designer.Viewport.MeasureOverride(Size availableSize)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint)
    à System.Windows.Controls.ContentPresenter.MeasureOverride(Size constraint)
    à System.Windows.Controls.ScrollContentPresenter.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV)
    à System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV)
    à System.Windows.Controls.Grid.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à System.Windows.Controls.ScrollViewer.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à System.Windows.Controls.Grid.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint)
    à System.Windows.Controls.ContentPresenter.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à System.Windows.Controls.Control.MeasureOverride(Size constraint)
    à System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    à System.Windows.UIElement.Measure(Size availableSize)
    à System.Windows.Interop.HwndSource.SetLayoutSize()
    à System.Windows.Interop.HwndSource.set_RootVisualInternal(Visual value)
    à System.Windows.Interop.HwndSource.set_RootVisual(Visual value)
    à MS.Internal.Designer.VSIsolatedDesigner.ViewHolder.Initialize()
    à MS.Internal.Designer.VSIsolatedDesigner.ViewHolder..ctor(UIElement content)
    à MS.Internal.Designer.VSIsolatedDesigner.VSIsolatedView.get_ViewHandle()
    à MS.Internal.Host.Isolation.IsolatedView.get_ViewHandle()
    à MS.Internal.Designer.DesignerPane.LoadDesignerView()
    Je vois pas d'où ça vient ...

    Citation Envoyé par Thomas Lebrun Voir le message
    Rien ne t'empêche de créer ton propre VirtualizingWrapPanel en te basant sur le même code
    Je suis pas encore assez fort en WPF pour ça

  7. #7
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par smyley Voir le message
    Je vois pas d'où ça vient ...
    Pourtant, c'est écrit

    La substitution des mesures de présentation de l’élément «*VirtualizingTilePanelSample.VirtualizingTilePanel*» ne doit pas renvoyer PositiveInfinity comme DesiredSize, même si Infinity est transmis sous forme de taille disponible.
    Autrement dit, dans la surcharge de MeasureOverride, j'ai l'impression qu'il renvoit Infinity comme valeur...

Discussions similaires

  1. Affichage d'un grand nombre d'objets
    Par Shindo dans le forum GLUT
    Réponses: 6
    Dernier message: 04/10/2011, 16h51
  2. [WPF] Afficher un grand nombre d'images
    Par NeoKript dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 04/07/2011, 21h31
  3. [Graphics View] Galerie d'images avec un grand nombre d'images
    Par feda12 dans le forum Qt
    Réponses: 3
    Dernier message: 09/02/2011, 23h27
  4. Affichage d'un grand nombre (double)
    Par gofono_bass dans le forum C++
    Réponses: 4
    Dernier message: 01/06/2008, 13h51
  5. Réponses: 2
    Dernier message: 22/12/2005, 18h16

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