Question

Is there any ways around to find the index position of a curve, based on the current xPosition,

let's say I have a curve Item - MyCurve, which has 20k points and when the mouse moves I could get the mouse location & then I could get the x & y positions by simply using the following function.

double xPos=0, yPos=0;

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

but I want to find the data points from the curve item, any suggestions...?

enter image description here Thanks in advance....:)

Was it helpful?

Solution

Bear in mind that the following is only an approximation, it should be accurate especially when you the mouse gets closer to the point, but as you are looking at the mouse position you may not be directly on a point on your curve. It also assumes that your CurveItem Curve has points, and that they are evenly distributed.

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;

OR you can use the following function:

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

But keep in mind that that will look for the nearest curve and the index of the nearest point within that curve.

OTHER TIPS

If you are not concerned with using the positions programmatically, but only want to see the positions displayed in your graph, you can set zedGraphControl1.IsShowPointValues to true:

Display point values in graph

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top