在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且indiex列表我看到索引[0]是435.0
x = 434且y = 233 tol = 5.0
计算后:dx = 1.0 并且dy = -2.0
最后dist = 2.236068
且idx为0
所以也许我不应该返回idx?可能会回来吗?
我搞砸了很久没碰到这段代码了。我不记得白衣它正在返回idx,也许没有dist。
答案 0 :(得分:1)
为什么当我返回变量idx时它始终为0?
正如您所说,第一次迭代的dist
计算值为2.236068
,小于tot
,等于5
。因为:
if (dist < tol) return idx;
返回idx
的值0
。
所以也许我不应该返回idx?可能会回来吗?
这取决于你想要达到的目标。