WinForm图表 - 增加滚动粒度

时间:2018-01-31 23:03:24

标签: c# winforms charts

有关我正在处理的内容的示例,请创建一个WindowsForms应用程序,创建一个新的图表,并将以下内容添加为Load事件:

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我希望这个间隔是什么,或者以其他方式启用平滑滚动?

1 个答案:

答案 0 :(得分:2)

这很好地隐藏在文档中。

首先我们找到this,指的是图表ScrollBar成员的Axis属性。我们正在处理AxisScrollBar个对象,而这些信息位于&#34;备注&#34;本文的部分: 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;

要使滚动大小与视图中的时间单位相对应,请使用SmallScrollSizeType对象上的AxisScaleView属性。再举一个例子,此属性的可能值记录为here

this.chart1.ChartAreas[0].AxisX.ScaleView.SmallScrollSizeType = DateTimeIntervalType.Weeks;