-3

在 Form1 我有这个代码:

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                label1.Visible = true;
                label4.Visible = true;
                if (wireObject1 != null)
                    float t = wireObject1.GetIndexByXY(e.X, e.Y, 5);

然后在 WireObject 类中我有这个功能:

public float GetIndexByXY( int x , int y , float tol)
        {
            for (idx = 0; idx < woc.Point_X.Count; idx++)//++idx)
            {
                float dx = woc.Point_X[idx] - x;
                float dy = woc.Point_Y[idx] - y;
                float dist = (float)Math.Sqrt(dx * dx + dy * dy);

                if (dist < tol) return idx;
            }
            return -1;
        }

idx 是在类顶部声明的浮点变量。对于这种情况下的示例:

woc.Point_X.Count 是 1 和索引列表我看到索引 [0] 是 435.0

x = 434 和 y = 233 tol = 5.0

计算后:dx = 1.0 和 dy = -2.0

最后 dist = 2.236068

idx 为 0

所以也许我不应该返回 idx ?并返回可能 dist ?

我搞砸了,我很长一段时间没有碰这个代码。我不记得它正在返回 idx 并且可能没有 dist 。

4

1 回答 1

1

为什么当我返回变量 idx 时它一直为 0?

正如您所说,dist第一次迭代的计算值2.236068小于tot等于5。所以因为:

if (dist < tol) return idx;

它返回的值idx0

所以也许我不应该返回 idx ?并返回可能 dist ?

这取决于您要达到的目标。

于 2013-06-01T12:32:39.993 回答