WinForm 图表 - 增加滚动粒度



对于我正在处理的示例,创建一个 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;

最新更新