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 :

PictureBox tres lent


Sujet :

C#

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut PictureBox tres lent
    Bonjour,

    dans une forme je creer dynamiquement plein de picturebox pour afficher des emoticones (416) en .gif, les emoticons se trouvent dans Resources du programme et non dans des fichier ou une dll.

    lorsque j'affiche la form les emoticones apparaissent au bout de 2,5 seconde alors que le meme code, exactement le meme sous delphi, sa s'affiche instantanement.

    est ce du a csharp ?

    ai-je oublie une propriete de l'activer ?

    existe t-il un controle specialement concu pour les images ?

    Merci de votre aide.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    C'est un peu violent d'afficher plus de 400 pictureboxes sur une form... il vaudrait mieux utiliser une autre approche, par exemple dessiner manuellement les images sur un panel.

    alors que le meme code, exactement le meme sous delphi, sa s'affiche instantanement.
    Euh... comment ça pourrait être le même code vu que ce n'est pas le même langage ?
    Tu parles de Delphi ou Delphi.NET ? Si c'est Delphi, ça n'a rien à voir, donc ce n'est pas vraiment comparable. Si c'est Delphi.NET, là c'est plus surprenant

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut
    oui je parle de delphi et non delphi .net

    c'est exactement le meme code, je lai juste transposer en c#.

    par contre je vais reflechir ta solution sur le panel mais je pense que j'aurais le meme probleme.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par andromeda Voir le message
    oui je parle de delphi et non delphi .net

    c'est exactement le meme code, je lai juste transposer en c#.
    On ne peut pas traduire directement du Delphi en C#, puisqu'ils utilisent des composants différents... par exemple, je suppose qu'il existe en Delphi un TPictureBox ou quelque chose comme ça, mais un PictureBox .NET n'est pas forcément équivalent à un TPictureBox...

    A quel endroit as-tu fait la création des PictureBox ? Dans le constructeur ? Dans le Form_Load ?

  5. #5
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Bonjour j'ai fais l'expérience dans un autre projet

    TomLev a totalement raison, le picturebox c'est bien pour afficher une image vite fait sans trop chipoter

    Mais dans ton cas a mon avis un panel s'impose. Tu dois dessiner les images dans des rectangles que tu définis sur la surface de ton pannel

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut
    Merci pour vos reponses je vais donc redessinner sur un panel les emoticones dans un cadre.

    La creation des picturebox se font dans le form load, j'avais teste dans le shown mais la form reste grise pendant deux seconde avant d'afficher les .gif dans les resources.

  7. #7
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    La form reste grise pendant deux seconde avant d'afficher les .gif dans les resources.
    ???

    Tu veux dire que tu stocke 400 gif dans tes ressources ??
    Je ne suis pas convaincu que ce soit la meilleure idée.

    Mais il y a peut etre des bonnes raisons a cela.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut
    oui les 400 sont dans les resources, sur delphi les images etait dans une dll

    est ce mieux de les mettre dans une dll et de charger cette dll ?

  9. #9
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Si pour une raison ou une autre les images peuvent evoluer indépendament de l'application, ce sera certainement une meilleure idée de les gerer a part

    Les ressource sont la pour gerer les données propre a l'application elle meme pas les données que doit exploiter l'application.

    En outre le fait de bourrer ton application avec des données fait que forcément le chargement sera plus lent

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut
    en testant de mettre les images dans une imagelist j'ai le meme probleme,
    je vais donc tenter de dessiner avec un Graphics() les images dans un panel, je vais regarder comment on peut faire cela sur google.

  11. #11
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    salut,

    je suis pas persuadé que ça va fonctionner, mais si tu essaye de mettre la propriété DoubleBuffered de ton formulaire à true, pour que l'affichage des graphiques soit accélérée...
    Si ça ne fonctionne toujours pas, regardes si ton code est optimisé...ou bien postes des bouts de code...

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut
    je viens de tester en dessinnant chaque image a l'aide de Graphics dans l'evennement paint et c'est instantané donc ca marche.

    Merci de m'avoir aider et eclairci.

    mon code:
    sachant que j'utilise une imagelist je ferai quand meme un test avec les images stockées dans les resources.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     private void FEmo_Paint(object sender, PaintEventArgs e)
            {
     
                int ImageLeft = 10;
                int ImageTop = 10;
                int ImageHeight = 21;
                int ImageWidth = 21;
                Graphics g = e.Graphics;
     
                for (int i = 0; i < MAX_EMOTICON_SEQUENCE; i++)
                {               
                    try
                    {
                        RectangleF srcRect = new RectangleF(ImageLeft, ImageTop, ImageWidth, ImageHeight);
     
                        g.DrawImage(imageList1.Images[i], srcRect);
     
                       if (((i % 30) == 0) && (i > 0))
                        {
                            ImageTop = 10 + ImageTop + ImageHeight;
                            ImageLeft = 10;
                        }
                        else
                            ImageLeft = 10 + ImageLeft +  ImageWidth;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message.ToString());
                    }
     
                }

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

Discussions similaires

  1. [wifi]transfert de données tres lent
    Par Grimaud dans le forum Hardware
    Réponses: 5
    Dernier message: 30/01/2006, 12h34
  2. [FB 1.5.2] Requetes tres lentes via VPN
    Par gudul dans le forum Connexion aux bases de données
    Réponses: 8
    Dernier message: 05/01/2006, 18h52
  3. NFS : Mount très lent
    Par litbos dans le forum Réseau
    Réponses: 2
    Dernier message: 28/12/2005, 14h23
  4. Impression très très lente avec Samba
    Par Daav dans le forum Réseau
    Réponses: 4
    Dernier message: 29/12/2004, 18h45
  5. Réponses: 6
    Dernier message: 29/09/2004, 12h45

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