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 Forms Discussion :

[C#] Affichage lent avec la méthode DrawRectangle


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 49
    Points
    49
    Par défaut [C#] Affichage lent avec la méthode DrawRectangle
    Bonjour,

    j'ai un problème de lenteur lors du dessin de plusieurs rectangles (1000 par exemple) sur ma winform, ils s'affichent les uns après les autres avec un effet de balayage à l'écran.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    for (int x = 0; x < this.xsize; x++)
                {
                    for (int y = 0; y < this.xsize; y++)
                    {
                        if ((int)level.getMatriceElement(x, y) == 1)
                        {
                            g.DrawRectangle(penR, 3*x + 10 , height + 3*y + 10, 1, 1);
                        }
                        else
                        {
                            g.DrawRectangle(penB, 3*x + 10 , height + 3*y + 10, 1, 1);
                        }
                    }
                }
    Comment puis-je faire pour que tout s'affiche "instantanément" sans ce balayage un peu disgracieux?

    merci d'avance!

  2. #2
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 49
    Points
    49
    Par défaut
    est-ce que finalement je ne pourrais pas écrire mes rectangles quelque part pour ensuite les afficher?
    D'un autre coté je ne vois pas de méthode autre que DrawRectangle pour dessiner des rectangles...

    Quelqu'un a une idée?

  3. #3
    Membre éprouvé Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Points : 1 256
    Points
    1 256
    Par défaut
    il faut utiliser le doublebuffering

  4. #4
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Solution 1 : utiliser le double buffering natif de .Net
    Solution 2 : le faire soit même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // créer son double buffer à la taille de l'image finale
    Bitmap mybuffer = new Bitmap(width, height);
    // récupérer l'objet Graphics associé
    using(Graphics gc = Graphics.FromImage(mybuffer))
    {
       // le code de dessin
       ...
    }
    // récupérer l'objet Graphics associé à ta form
    using(Graphics gc = myform.CreateGraphics())
    {
      // coller le résultat dedans
      gc.DrawImage(mybuffer, ...);
    }

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 49
    Points
    49
    Par défaut
    ok merci j'étais en train de lutter pour comprendre cette histoire de double buffering

    je regarde tout ça merci !

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/03/2014, 10h27
  2. Problème d'affichage avec le méthode toString()
    Par Premium dans le forum Langage
    Réponses: 8
    Dernier message: 26/10/2006, 11h36
  3. Impression très très lente avec Samba
    Par Daav dans le forum Réseau
    Réponses: 4
    Dernier message: 29/12/2004, 18h45
  4. Affichage graphe avec DBChart
    Par grominetos dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/06/2004, 19h17
  5. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26

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