2011-01-13 3 views
4

mit der MS-Charting für. NET, Ich versuche, in das Diagramm, das ich erstellt habe zu zoomen.C# Charting Zoom-Problem mit DataTime für X-Achse

Dies funktioniert auf der Y-Achse (Typ = Float) und auf der X-Achse, wenn Typ = Int, aber wenn ich DateTime-Werte auf der X-Achse haben, verhält sich Bildlauf nicht wie es auf dieser Achse sein sollte.

Vertikal verhält sich alles immer noch richtig, aber während ich in die X-Achse hineinzoomen kann, kann ich den Schieberegler nicht ziehen, um dorthin zu gelangen, wo ich gezoomt bin. Ich kann jedoch auf jede Seite klicken und es wird springen.

Weiß jemand, wie man das behebt und es so verhält, wie es mit Fließkommawerten tut?

Danke!

Antwort

8

Je nach Ihren Daten versuchen Sie, die Eigenschaft CursorX.IntervalType des Diagrammbereichs auf etwas anderes als Auto zu setzen. Wenn Sie versuchen, die kleinen Bildlaufpfeile der Bildlaufleiste zu verwenden, nachdem Sie gezoomt haben, tritt möglicherweise ein ähnliches Problem auf. Um das Problem zu beheben, können Sie versuchen, die AxisX.ScaleView.SmallScrollSizeType-Eigenschaft des Diagrammbereichs auf die gleiche Weise wie die CursorX.IntervalType festzulegen.

Zum Beispiel, wenn Sie eine Tabelle mit Daten, die alle 30 Sekunden gemeldet ist, können Sie die folgenden Einstellungen verwenden:

 chart1.ChartAreas[0].CursorX.IsUserEnabled = true; 
     chart1.ChartAreas[0].CursorX.IsUserSelectionEnabled = true; 
     chart1.ChartAreas[0].CursorX.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Minutes; 
     chart1.ChartAreas[0].CursorX.Interval = 0.5D; 

     chart1.ChartAreas[0].AxisX.ScaleView.SmallScrollSizeType = DateTimeIntervalType.Minutes; 
     chart1.ChartAreas[0].AxisX.ScaleView.SmallScrollSize = 0.5D; 
     chart1.ChartAreas[0].AxisX.ScaleView.Zoomable = true; 
     chart1.ChartAreas[0].AxisX.LabelStyle.Format = "hh:mm:ss"; 
+0

Danke für die Antwort - aber immer noch nicht funktioniert. Ich war jedoch nicht auf die ScaleView gestoßen, also werde ich einen Blick darauf werfen und sehen, ob mir das irgendwelche Hinweise gibt. – Mark

+0

Ganz zuerst geholfen: Einstellung auf Minuten ausgearbeitet. – nerijus

+0

Danke, das hat den Trick für mich, sehr geschätzt! – Austin

0

ich das gleiche Problem hatte und diese Einstellungen lösen es für mich:

 _chart.ChartAreas[0].CursorX.IsUserEnabled = true; 
     _chart.ChartAreas[0].CursorX.IsUserSelectionEnabled = true; 
     _chart.ChartAreas[0].CursorX.IntervalType = DateTimeIntervalType.Minutes; 
     _chart.ChartAreas[0].CursorX.Interval = 1D; 

     _chart.ChartAreas[0].AxisX.ScaleView.SmallScrollSizeType = DateTimeIntervalType.Minutes; 
     _chart.ChartAreas[0].AxisX.ScaleView.SmallScrollSize = 1D; 
     _chart.ChartAreas[0].AxisX.ScaleView.Zoomable = true; 

     _chart.ChartAreas[0].AxisX.ScaleView.MinSizeType = DateTimeIntervalType.Minutes; 
     _chart.ChartAreas[0].AxisX.ScaleView.MinSize = 1D; 

     _chart.ChartAreas[0].AxisX.ScaleView.SmallScrollMinSizeType = DateTimeIntervalType.Minutes; 
     _chart.ChartAreas[0].AxisX.ScaleView.SmallScrollMinSize = 1D; 

Vor allem die letzten beiden Zeilen haben den Job gemacht.

0

hinzufügen

chart.ChartAreas[0].AxisX.ScaleView.SmallScrollMinSizeType = DateTimeIntervalType.Seconds;