2009-08-15 7 views
1

J'essaie de ré-apprendre WPF et j'ai commencé un petit projet qui a un graphique en ligne, un peu comme les performances du processeur que vous verriez dans Taskmanager. Le graphique est essentiellement un canevas qui a été ajouté à ses enfants et basé sur un échantillon Avalon que j'ai trouvé ici http://msdn.microsoft.com/en-us/library/aa480159.aspxComment modéliser un graphe déroulant dans WPF?

Actuellement, lorsque j'arrive au bord le plus à droite du graphique, j'efface mon ensemble de données et réinitialiser mes coordonnées x à zéro et le graphique commence à redessiner du côté gauche après un effacement.

y = value; 
x = x + 1; 
if (x == samples) 
{ 
    CpuGraphAnimation2d.Children.RemoveRange(0, samples); 
    x = 0; 
} 

Ce que je veux faire est d'avoir le graphique « défilement » vers la gauche comme de nouvelles valeurs arrivent, et ont effectivement toutes les anciennes valeurs shuffle à gauche et déposez la valeur la plus gauche.

Quel serait le moyen le plus efficace d'obtenir cet effet dans WPF?

Répondre

1

Vous pouvez essayer de créer un StreamGeometry comme suit, en supprimant le premier élément de yourarray avant de faire ce qui suit:

 StreamGeometry sg = new StreamGeometry(); 

     using (StreamGeometryContext context = sg.Open()) 
     { 
      context.BeginFigure(new Point(0, yourarray[0]), false, false); 
      for (int x = 0; x < len; x++) 
      { 
       context.LineTo(new Point(x, yourarray[x], true, true); 
      } 

      sg.Freeze(); 
      System.Windows.Shapes.Path path = new System.Windows.Shapes.Path(); 
      path.Data = sg; 
      path.Stroke = Brushes.Red; 
     } 

qui est un moyen rapide de régénérer votre graphique chaque passe. le chemin créé à la fin du code doit être ajouté à un contrôle ou un panneau dans votre fenêtre.

Questions connexes