Bonjour,
Je me suis défini un control qui réprésente une zone de trace (un graphique) qui se met a jour de façon asynchrone sur reception d'une nouvelle mesure...
(Une mesure dans mon cas correspond a un tableau de 40valeurs correspondants a la couleur du pixel pour chaque ordonnée)
En gros a chaque fois que je recois une mesure (correspondant donc a une abscisse), je rafraichi le control pour afficher cette mesure..
Mon problème est qu'au plus je recois de mesures au plus il y a de pixels a affichés.
Au départ, a l'oeil nu, le rafraichissement n'est pas génant car on voit juste une mesure apparaitre a droite des autres...
Par contre quand j'ai beaucoup de mesures, le temps qu'il redessine les mesures a chaque Refresh fait que je vois mon graphique se remplir de gauche a droite...
(comme il recoit plusieurs mesures a la seconde, a force le graphique entier "scintille")
Je pense qu'il est possible de travailler sur le graphics puis d'afficher visuellement les modifs d'un coup mais je ne sais pas comment...
En pseudo code je voudrais savoir s'il existe pas un truc du genre :
hum.. le pseudo code est un peu débile mais j'espère que vous aurez compris dans l'idée ce que je cherche a faire...
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 protected override void OnPaint(PaintEventArgs e) { Brush brush = new SolidBrush(Color.Red); // Les modifications serotn mis en "pile" e.graphics.METTRE_EN_PAUSE(); // Le rectangle n'est pas affiché tout de suite e.Graphics.FillRectangle(brush, new Rectangle(0,0,10,10)); // Le rectangle n'est pas affiché tout de suite e.Graphics.FillRectangle(brush, new Rectangle(0,0,10,10)); ........ for(int i= 0 ; i < listesMesuresRecues.Count; i++) { // DESSINER LA MESURE } ........ // le graphics trace tout d'un coup... e.graphics.FLUSH(); }![]()
Merci d'avance pour vos réponses.
fd.
Partager