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 :

Méthode pour dessiner de façon performante


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut Méthode pour dessiner de façon performante
    Bonjour,

    ce bout de code est (très) lent. Ok il n'est pas optimisé mais tout de même...
    J'aimerais connaître les techniques pour dessiner de manière efficace en .net.

    Merci d'avance

    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
    33
    34
    35
    System.Drawing.Graphics gl = Left.CreateGraphics();
    System.Drawing.Graphics gr = Right.CreateGraphics();
    gl.Clear( System.Drawing.Color.Black );
    gr.Clear( System.Drawing.Color.Black );
     
    System.Drawing.Pen p = new System.Drawing.Pen( System.Drawing.Color.Orange );
     
    int h = Left.Height/2;
     
    System.Drawing.Point[] ptsl = new System.Drawing.Point[2];
    ptsl[0] = new System.Drawing.Point();
    ptsl[1] = new System.Drawing.Point();
    System.Drawing.Point[] ptsr = new System.Drawing.Point[2];
    ptsr[0] = new System.Drawing.Point();
    ptsr[1] = new System.Drawing.Point();
    int b = 0;
    for ( uint i = 0; i < size; ++i, b=++b%2 )
    {
    	int x = (int)(( (double)i / (double)size ) * Left.Width);
    	int yl = (int)( data[0][i] * h ) + h;
    	int yr = (int)( data[1][i] * h ) + h;
    	ptsl[b].X = x;
    	ptsl[b].Y = yl;
    	ptsr[b].X = x;
    	ptsr[b].Y = yr;
    	if ( i != 0 )
    	{
    		gl.DrawLine( p, ptsl[b], ptsl[(b + 1) % 2] );
    		gr.DrawLine( p, ptsr[b], ptsr[(b + 1) % 2] );
    	}
     
    }
     
    gl.Dispose();
    gr.Dispose();

  2. #2
    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
    Tu as essayé d'activer le DoubleBuffering sur le contrôle parent ou d'utiliser la classe BufferedGraphics ?

  3. #3
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    J'ai utilisé des BufferedGraphics et c'est effectivement beaucoup mieux, merci !
    Mais du coup de je vais etre en retard au boulot moi ^^

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/06/2004, 11h23
  2. [C#] Une seule méthode pour plusieurs composants
    Par niPrM dans le forum Windows Forms
    Réponses: 8
    Dernier message: 01/06/2004, 14h41
  3. [SWING][THREAD]Méthodes pour afficher une Frame
    Par pompidouwa dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 05/05/2004, 10h35
  4. [debutant] Probleme pour dessiner un simple cube
    Par scorpiwolf dans le forum DirectX
    Réponses: 6
    Dernier message: 02/07/2003, 20h29
  5. Fonction/méthode pour obtenir l'IP de la machine
    Par sirex007 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 10/04/2003, 14h36

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