对于我正在处理的示例,创建一个 WindowsForms 应用程序,创建一个新的图表,并添加以下内容作为加载事件:
this.chart1.Series.Clear();
this.chart1.ChartAreas[0].CursorX.IsUserEnabled = true;
this.chart1.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;
this.chart1.ChartAreas[0].AxisX.ScaleView.Zoomable = true;
this.chart1.ChartAreas[0].CursorX.Interval = 1 / 24.0 / 60.0; // To increase selection granularity
this.chart1.ChartAreas[0].AxisX.ScrollBar.IsPositionedInside = true;
this.chart1.ChartAreas[0].AxisX.LabelStyle.Format = ("M/d H:mm:ss");
var series = new Series("Some Series") {ChartType = SeriesChartType.Line};
for (var i = 0; i < 5; i++)
{
series.Points.AddXY(DateTime.UtcNow.AddDays(i), i + 1);
}
this.chart1.Series.Add(series);
当我运行它时,我能够放大数据以仔细查看,但水平滚动条的行为不是我要找的;单击任一箭头会向任一方向跳跃一整天,而不考虑系列的内部数据。如果少于一天的数据,它将跳到最后。拖动条形图同样受到限制。如何指定我希望此间隔的 TimeSpan,或以其他方式启用平滑滚动?
在文档中隐藏得很好。
首先,我们发现它指的是图表Axis
成员的ScrollBar
属性。我们正在处理一个AxisScrollBar
对象,信息在本文的"备注"部分中:https://msdn.microsoft.com/en-us/library/system.windows.forms.datavisualization.charting.axisscrollbar.aspx
若要控制较大的滚动大小,请使用 ScaleView 对象的 Size 属性。若要设置较小的滚动大小,请使用 AxisScaleView 类的 SmallScrollSize 属性。
因此,例如,
this.chart1.ChartAreas[0].AxisX.ScaleView.Size = 50;
this.chart1.ChartAreas[0].AxisX.ScaleView.SmallScrollSize = 5;
若要使滚动大小对应于视图中的时间单位,请在AxisScaleView
对象上使用 SmallScrollSizeType
属性。同样举个例子,此处记录了此属性的可能值。
this.chart1.ChartAreas[0].AxisX.ScaleView.SmallScrollSizeType = DateTimeIntervalType.Weeks;