4

有什么方法可以根据当前的 xPosition 找到曲线的索引位置,

假设我有一个曲线项目 - MyCurve,它有 20k 个点,当鼠标移动时,我可以获得鼠标位置,然后我可以通过简单地使用以下函数来获得 x 和 y 位置。

double xPos=0, yPos=0;

this.zedGraphControl1.GraphPane.ReverseTransform(MouseLoc, out xPos, out yPos);

但我想从曲线项中找到数据点,有什么建议......?

在此处输入图像描述 提前致谢....:)

4

2 回答 2

3

请记住,以下只是一个近似值,它应该是准确的,尤其是当您的鼠标靠近该点时,但是当您查看鼠标位置时,您可能不会直接位于曲线上的某个点上。它还假设您CurveItem Curve有积分,并且它们是均匀分布的。

double startPos = Curve.Points[0].X
double xStep = Curve.Points[Curve.NPts - 1].X / Curve.NPts;
int xIndex = (int)(xPos / xStep + startPos);
// Make sure it is in bounds
xIndex = xIndex < 0 ? 0 : xIndex > Curve.NPts - 1 ? Curve.NPts - 1 : xIndex;

或者您可以使用以下功能:

CurveItem n_curve;
int index;
zedGraphControl1.GraphPane.FindNearestPoint(mousePt, out n_curve, out index);

但请记住,这将寻找最近的曲线该曲线内最近点的索引。

于 2012-08-02T14:25:54.277 回答
1

如果您不关心以编程方式使用位置,而只想查看图表中显示的位置,您可以设置zedGraphControl1.IsShowPointValuestrue

在图表中显示点值

于 2012-08-02T14:41:21.917 回答