创建Horiz.当数据在屏幕外绘制时,图表上的滚动条

本文关键字:滚动条 绘制 Horiz 数据 屏幕 创建 | 更新日期: 2023-09-27 18:24:59

我有一个折线图,在绘制了足够多的数据点后,数据将超过屏幕上可见的数据(因此图表只显示最新的数据)。当这种情况发生时,我希望为X轴填充一个滚动条,允许用户使用滚动条查看以前的数据。

我该怎么做?我不希望用户能够在图表上拖动或缩放,只想使用滚动条在图表上导航。

我看过这篇文章:https://msdn.microsoft.com/en-us/library/dd456730.aspx但这并没有帮助&滚动条不会出现。

创建Horiz.当数据在屏幕外绘制时,图表上的滚动条

如果看不到代码的相关部分,就很难确定问题所在。

这里有一个奇怪的说法:

在绘制了足够多的数据点后,数据将超过屏幕上可见的内容(因此图表只显示最新数据)。

现在,这只能在设置AxisX.Maximum之后发生,因为默认情况下,图表控件会在添加点时越来越多地挤压区域。

但是,当您设置了可以显示的最大值时,滚动条就无法工作,甚至无法显示。听起来合乎逻辑,对吧?

因此,首先不要设置它,或者在点数超过您想要显示的值时清除它。要清除它,请使用NaN:

chart1.ChartAreas[0].AxisX.Maximum = Double.NaN;

或者,当然,把它设置到你想展示的最后一点!

在看了你不能做的事情之后,让我们看看你需要做什么来显示滚动条:

首先启用它:

chart1.ChartAreas[0].AxisX.ScrollBar.Enabled = true;

接下来你告诉它只显示滚动手柄,而不是缩放重置按钮:

chart1.ChartAreas[0].AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.SmallScroll;

有关滚动条可以显示/执行的各种操作,请参阅ScrollBarButtonStyles上的MSDN!

为了确保用户不能缩放设置为:

chart1.ChartAreas[0].AxisX.ScaleView.Zoomable = false;

最后设置当前范围以显示:

chart1.ChartAreas[0].AxisX.ScaleView.Size = 111;  // show 111 DataPoints

现在应该显示滚动条了。

研究AxisScaleView类是个好主意,因为它有几个有用的属性。。

根据X值的数据类型,您可能还需要将ScaleView.MinSizeType设置为适合您数据的值:

chart1.ChartAreas[0].AxisX.ScaleView.MinSizeType = DateTimeIntervalType.Number;