4

現在の xPosition に基づいて、曲線のインデックス位置を見つける方法はありますか?

20k のポイントを持つ MyCurve という曲線アイテムがあり、マウスが動くとマウスの位置を取得でき、次の関数を使用するだけで 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.IsShowPointValuesますtrue

ポイント値をグラフで表示

于 2012-08-02T14:41:21.917 に答える