创建Horiz.当数据在屏幕外绘制时,图表上的滚动条
本文关键字:滚动条 绘制 Horiz 数据 屏幕 创建 | 更新日期: 2023-09-27 18:24:59
我有一个折线图,在绘制了足够多的数据点后,数据将超过屏幕上可见的数据(因此图表只显示最新的数据)。当这种情况发生时,我希望为X轴填充一个滚动条,允许用户使用滚动条查看以前的数据。
我该怎么做?我不希望用户能够在图表上拖动或缩放,只想使用滚动条在图表上导航。
我看过这篇文章:https://msdn.microsoft.com/en-us/library/dd456730.aspx但这并没有帮助&滚动条不会出现。
如果看不到代码的相关部分,就很难确定问题所在。
这里有一个奇怪的说法:
在绘制了足够多的数据点后,数据将超过屏幕上可见的内容(因此图表只显示最新数据)。
现在,这只能在设置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;