Ich habe ein Problem mit C# -Charting.Diagramm: Rot X Fehler beim Versuch, mehrere Serien in einem indizierten Diagramm anzuzeigen
Dies ist mit System.Windows.Forms.DataVisualization.Charting
Meine Serie sind so konfiguriert, als solche indiziert zu werden:
{
Name = name,
Color = color,
IsVisibleInLegend = false,
IsXValueIndexed = true,
ChartType =
System.Windows.Forms.DataVisualization.Charting.SeriesChartType.FastLine
};
Ich habe 3-Serie in diesem Diagramm
Ich bin Hinzufügen von Daten zu der Serie, wenn sie über einen Event-Handler ankommt
for (int i = 0; i < samples; i++)
{
double time_point = DData[i * 4]
chart1.Series[0].Points[lastSample + i].XValue = time_point;
chart1.Series[0].Points[lastSample + i].YValues[0] = DData[i * 4 + 1];
chart1.Series[1].Points[lastSample + i].XValue = time_point;
chart1.Series[1].Points[lastSample + i].YValues[0] = DData[i * 4 + 2];
chart1.Series[2].Points[lastSample + i].XValue = time_point;
chart1.Series[2].Points[lastSample + i].YValues[0] = DData[i * 4 + 3];
}
lastSample = (lastSample + samples) % maxPlotPoints;
chart1.Invalidate();
Die Frage ist, wie folgt:
- Wenn ich auf jede Serie drehen einzeln (über chart1.Series [0] .Enabled), sie alle
- gut funktionieren, wenn ich auf mehr als 1 Serie zu einer Zeit drehen , ein großes rotes X erscheint anstelle von eh chart, und ich muss die Anwendung neu starten, um das Streaming von Charts fortzusetzen. Dies geschieht entweder sofort oder nach ein paar Sekunden.
- Wenn ich time_point auf eine andere Zahl festgelegt, wie 0, dieses Problem nicht geschieht, und alle drei Diagramme können gleichzeitig
Weiter angezeigt werden, ich verstehe, dass dies geschieht, wenn jede Serie eine andere X hat -Wert für den gleichen Punkt []. Aber ich setze ausdrücklich alle 3 Reihen, um den gleichen genauen time_point zu verwenden
Meine folgende Annahme war, dass der Eventhandler das Profil ausführte, bevor das vorhergehende Gewinde beendet wurde.
So habe ich eine Sperre um die grafische Darstellung Anruf, es ist nicht
sindprivate Object thisLock = new Object();
lock (thisLock)
{
}
meine Fragen geholfen haben:
Weiß jemand, ob es einen anderen Grund, warum dies verursacht werden kann?
Ist es überhaupt möglich, nur die X-Indizes der ersten Serie für das Diagramm zu verwenden, aber alle 3 Reihen gleichzeitig anzuzeigen?
_Wenn ich time_point auf eine andere Nummer, wie 0_ Ist das "wie" oder "anders als 0"? Außerdem: Der angezeigte Code ändert nur DataPoints; es fügt sie nicht hinzu, richtig? – TaW
Korrigieren. Ich habe alle Datenpunkte erstellt, damit das Diagramm die gleiche Länge behält, und es aktualisiert nur Punkte von links nach rechts (sieht wie ein EKG-Scan aus). Ich kann time_point auf jede feste Zahl setzen und es funktioniert, nur wenn time_point sich ständig ändert, stürzt es ab. Zum Beispiel, wenn ich time_point ++ nach chart1.Invalidate() stürze – Mich
Hm, wäre ein Test zu sehen, ob es mit der IsXValueIndexed-Eigenschaft zu tun hat. Sie könnten es vor den Updates auf "false" setzen und danach auf "true" setzen. Übrigens: Sie müssen es nur für eine Serie einstellen. – TaW