根据光标位置访问折线图的Y值

时间:2016-11-07 14:03:20

标签: c# winforms charts

我是图表的新手,并且有一个看起来如此的折线图。

https://s15.postimg.org/vzl71faqj/Untitled.png

垂直线是光标所在的位置,通过mousemove而不是鼠标点击进行更新。

正如标题所示,我想要做的是在垂直线和“数据线”相交的点处访问Y值。

我已经尝试了这个 - Get Y value of series from the X Cursor position where a ChartArea is clicked on但是除非我遗漏了一些它不起作用,否则它会返回系列中的第一个或最后一个值,具体取决于您使用的数据点。

我尝试过hittestresult,如果你“触摸”数据线本身,它似乎才有效。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

由于您没有向我们展示任何代码并且没有回答我的问题,我只能假设您的图表没有有效的,即数字x值。

这意味着x值都是0并且不能用于任何事情:既不用于设置缩放范围,也不用于格式化轴或其他标签,也不用于查找{{1}在x位置。

这可称为“隐式索引”。结果类似于显式索引图表,这是将DataPoints的{​​{1}}设置为true的结果:IsXValueIndexed排成一行,所有行都显示在相同的距离。

通常不是人们想要的,我真的建议您通过添加Series来修复它,不是这样的:

DataPoints

但也许是这样的:

DataPoints

然后linked answer就可以了。

但是,只是为了说明 解决方法是如何找到索引图表中最近的两个点。

请注意,它使用一个函数(实际上是两个)来计算内部绘图位置的像素矩形。您可以找到它们herehere ..:

for (int i = 0; i < count; i++) chart1.Series[0].Points.AddY(someYValue);

它会起作用,但你真的应该纠正添加数据点的方式!