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 :

[C++ .Net 1.1] Comment optimiser l'affichage ?


Sujet :

C#

  1. #1
    Membre habitué
    Inscrit en
    Août 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 12
    Par défaut [C++ .Net 1.1] Comment optimiser l'affichage ?
    Bonjour,
    j'ai un panel qui contient environ 2000 petites picturebox (100*20 pixels)
    Quand je cherche à supprimer un groupe de picturebox, ca rame enormement et il me faut 30s pour effacer 100 picturebox.
    ces picturebox sont rangées dans plusieurs arraylist et non dans un seul.
    j'ai l'impression que plus il y a de controls dans mon panel et plus c'est dur pour lui d'en supprimer.
    J'ai l'impression qu'il pert du temps à rechercher dans le panel le control à supprimer. Est-ce cela?
    Est-ce le calcul de l'affichage de la fenetre qui prend du temps?
    quelqu'un pourrait-il me dire pourquoi ca rame autant et me donner une solution?
    Merci de votre aide

  2. #2
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Ce qui fait le plus mal, dans l'ordre :
    1 - L'affichage ça prend du temps.
    2 - Modifier la collection de contrôles

    Rechercher le controle dans une liste : c'est super rapide par rapport aux deux autres.
    Pour optimiser : ne faire qu'une seule PictureBox et tout dessiner dedans...

  3. #3
    Membre habitué
    Inscrit en
    Août 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 12
    Par défaut
    Citation Envoyé par Mose
    Ce qui fait le plus mal, dans l'ordre :
    1 - L'affichage ça prend du temps.
    2 - Modifier la collection de contrôles

    Rechercher le controle dans une liste : c'est super rapide par rapport aux deux autres.
    Pour optimiser : ne faire qu'une seule PictureBox et tout dessiner dedans...
    Le pb, c'est que j'ai besoin de rajouter des handler de clic sur toutes mes picture box donc si je dessine dans une seule, je pourrais pas faire ce que je veux en fait...

  4. #4
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Citation Envoyé par juliano_bipso
    Le pb, c'est que j'ai besoin de rajouter des handler de clic sur toutes mes picture box donc si je dessine dans une seule, je pourrais pas faire ce que je veux en fait...
    Si en effet juste un UserControl dérivé de Panel qui contient
    1. une collection de Rectangles donc indexés et il est facile de redessiner un Rectangle spécifique à partir de l'objet Graphics de ce panel customisé.
    2. une méthode GetRectangle qui obtient l'Objet Rectangle concerné à partir d'un Objet Point
    3. L'évènement Click ou MouseDown sur ce panel customisé recupère la position de la souris puis donc l'objet Rectangle concerné.
    Elementaire mon cher Watson, tu économises donc 2000 contrôles devenus inutile

  5. #5
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Méthode très pratique également: Rectangle.Contains(Point pt)

  6. #6
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Citation Envoyé par Mose
    Méthode très pratique également: Rectangle.Contains(Point pt)
    tu veux dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unRectangle->Contains(Point* pt)
    D'ailleurs il serait interressant juliano_bipso que tu passes à 2.0 pour utiliser C++/CLI et les génériques

Discussions similaires

  1. Réponses: 6
    Dernier message: 15/11/2007, 12h31
  2. [C# .NET 1.1] Optimiser l'affichage
    Par mow dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/09/2006, 10h58
  3. [VB.Net/Datagrid-Arraylist] Comment râfraichir l'affichage?
    Par bguihal dans le forum Windows Forms
    Réponses: 3
    Dernier message: 14/02/2006, 13h26
  4. Réponses: 2
    Dernier message: 17/10/2005, 10h29
  5. Optimiser l'affichage d'un fichier XML de grosse taille...
    Par UnPeuPerdu dans le forum XML/XSL et SOAP
    Réponses: 11
    Dernier message: 03/06/2004, 16h01

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