2009-11-24 8 views
2

J'ai pris l'exemple des échantillons sur le site Web de microsfot. L'exemple est le temps réel Date & Temps pour C#. L'exemple fonctionne parfaitement lorsque vous utilisez une courte distance et que vous l'exécutez exactement comme il est, mais je dois être capable de surveiller mon graphique pendant au moins 45min-1 heure et seulement ensuite les valeurs commencent à tomber. Ce que je voudrais faire est d'avoir environ 5min de temps de visionnage et le reste du graphique tracé, je voudrais pouvoir revenir en arrière. Donc, ci-dessous est la zone qui est le problème. J'ai besoin d'ajouter la vue d'échelle pour régler le montant que je peux voir sur le graphique avant qu'il ne défile (ce qui ne marche pas aussi bien), mais au moment où je fais la vue d'échelle ci-dessus 1 aucune des étiquettes de valeur X-Axis et si oui, alors seulement 1 d'entre eux sont et pas plus. Le code est un peu brouillon car cela a été très frustrant. Quelqu'un peut-il m'aider ou me guider vers un meilleur tableau, car le support et la documentation de ce tableau est terrible.MS Chart Scaleview & Threading

private void startTrending_Click(object sender, EventArgs e) 
    { 
     // Disable all controls on the form 
     startTrending.Enabled = false; 
     // and only Enable the Stop button 
     stopTrending.Enabled = true;    
     // Predefine the viewing area of the chart 
     minValue = DateTime.Now; 
     maxValue = minValue.AddMinutes(120);   
     chart1.ChartAreas[0].AxisX.Minimum = minValue.ToOADate(); 
     chart1.ChartAreas[0].AxisX.Maximum = maxValue.ToOADate(); 

     // Reset number of series in the chart. 
     chart1.Series.Clear(); 

     // create a line chart series 
     Series newSeries = new Series("Series1"); 
     newSeries.ChartType = SeriesChartType.Line; 
     newSeries.BorderWidth = 2; 
     newSeries.Color = Color.OrangeRed; 
     newSeries.XValueType = ChartValueType.Time;   
     chart1.Series.Add(newSeries);    
     /*chart1.ChartAreas[0].AxisX.LabelStyle.Format = "hh:mm"; 
     chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Minutes; 
     chart1.ChartAreas[0].AxisX.Interval = 1; 
     chart1.ChartAreas[0].AxisX.MajorGrid.Interval = 1; 
     chart1.ChartAreas[0].AxisX.MajorTickMark.Interval = 0.5; 
     chart1.ChartAreas[0].AxisX. */   
     chart1.ChartAreas[0].AxisX.ScrollBar.Enabled = true; 
     chart1.ChartAreas[0].AxisX.ScaleView.SizeType = DateTimeIntervalType.Minutes; 
     chart1.ChartAreas[0].AxisX.ScaleView.Size = 1; 
     chart1.ChartAreas[0].CursorX.Interval = 0; 

     // start worker threads. 
     if (addDataRunner.IsAlive == true) 
     { 
      addDataRunner.Resume(); 
     } 
     else 
     { 
      addDataRunner.Start(); 
     } 
    } 

Répondre

1

Je recommande l'open source, et impressionnant, bibliothèque WPF Dynamic Data Display de recherche sur la SP.

Il est livré avec un tas de projets d'échantillons, dont vous pouvez probablement sur mesure pour répondre à vos besoins.

1

Passé à un graphique appelé TeeChart. Je dois payer pour cela, mais ça vaut vraiment le coup. J'ai combattu pendant quelques jours sur MSChart. A fait exactement la même chose dans TeeChart en 30 minutes.