Charts und Zoom...
-
Hallo,
ich habe eine ganze Menge Daten, die ich in einem MS-Chart anzeigen lasse. Damit das Laden nicht zu lange dauert, begrenze ich die angezeigten Werte auf ca. 1 Wert/Pixelbreite. Somit habe ich selbst bei 100000 Werten aus der Datenbank nur 1000 Werte, die angezeigt werden.
Um dann einzelne Bereiche genauer betrachten zu können, sind vom ChartArea die CursorX.IsUserEnabled- und IsUserSelection-Properties aktiviert. Wenn sich der Auswahlbereich ändert, frage ich den Ausgewählten bereich ab und lade nur diese Daten neu, allerdings mit einer höheren Genauigkeit, sodass ich wieder ca. 1 Wert/Pixel habe. Allerdings gibt es kurzzeitig die "normale" Zoom-Ansicht vom Chart. Kann man diese verhalten deaktivieren?
Zur Zeit habe ich diesen Code:private void chart_SelectionRangeChanging(object sender, CursorEventArgs e) { WertebereichAnpassen(e.NewSelectionStart, e.NewSelectionEnd); }
private void chart_SelectionRangeChanged(object sender, CursorEventArgs e) { ChartAktualisieren(); }
private void ChartAktualisieren() { chart.SuspendLayout(); #region Chart aktualisieren chart.Series.Clear(); foreach (Series item in sc) //sc enthält die Datenreihen mit den neuen Werten { chart.Series.Add(item); } chart.ChartAreas[0].CursorX.Interval = (precision > 1d / (24d * 60d) ? precision : 1d / (24d * 60d)); chart.ChartAreas[0].AxisX.Minimum = start.ToOADate(); //Anfangsdatum der Auswahl chart.ChartAreas[0].AxisX.Maximum = end.ToOADate(); //Enddatum der Auswahl chart.ChartAreas[0].AxisX.LabelStyle.Format = "dd.MM.yyyy HH:mm"; //Achsenformat chart.ChartAreas[0].AxisX.ScaleView.ZoomReset(int.MaxValue); //Zoom zurücksetzen, damit nicht mehr der Scrollbalken angezeigt wird, kurzzeitig ist er trotzdem sichtbar :( #endregion chart.ResumeLayout(); }
Schonmal Danke für Eure Bemühungen !
-
Ich hab das Problem dadurch gelöst, dass ich bei der primären X-Achse die Eigenschaft ScaleView.Zoomable auf false festgelegt habe.