Bonjour,

j'ai develope il y a quelque temps avec votre aide un afficher de courbes de mesures en VB2008 et GDI+. Il fonctionne super bien, mais avac la quantite de donnees a afficher (souvent largement plus de 100.000pts) la regeneration de l'ecran quand on veut deplacer la partie visible sur l'ecran devient lent.
Mon idee serais de creer un objet en memoire dans lequel on trace toute la courbe, et pour afficher la partie visible on copie la partie souhaitee sur l'ecran : par exemple on a une mesure sur 100sec, mais on affiche que entre 10sec et 12sec, puis on se decalle et on veut voir entre 11 et 13, etc. . ce decallage bien sur par un mouvement de la souris bien fluide.

J'utilise un bufferedgraphics, donc l'idee serais d'avoir un buffer tres grand et de transferer par render juste une petite partie sur le graphics de l'objet du formulaire.
Mais comment faire ce decoupage au moment de la fonction render (ou tout autre procedee qui marche ?

Ici en tres simplifie comment je procede actuellement pour dessiner sur Panel1

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
' activer le system de buffer graphics double
 SetStyle(System.Windows.Forms.ControlStyles.OptimizedDoubleBuffer, True)
 ContextGraph = BufferedGraphicsManager.Current
 ContextGraph.MaximumBuffer = New Size(Panel1.Width, Panel1.Height)
 
' recuper le graphics de la surface de dessin
  GraphicsControl = Panel1.CreateGraphics
 
' dimensioner le buffergraph
  BufferGraph = ContextGraph.Allocate(GraphicsControl, New Rectangle(0, 0, Panel1.Width, Panel1.Height))
 
' effacer fond
 BufferGraph.Graphics.FillRectangle(Brushes.Beige, 0, 0, Panel1.Width, Panel1.Height)
 GraphicsControl.FillRectangle(Brushes.Beige, 0, 0, Panel1.Width, Panel1.Height)
 
' dessiner
 For i = 0 To 1000 Step 10
     BufferGraph.Graphics.DrawLine(Pens.Black, 0, 0, i * 10, 1000)
 Next
 
' envoyer dessin sur l'閏ran
 BufferGraph.Render(GraphicsControl)
Merci de votre aide

(Je suis en chine, ici pas d'accents sur le clavier, donc mes excuses)