0

在 Windows 窗体应用程序中,我创建了一个图形框或椭圆,当我开始在运行时移动它时,我希望这个图形不会从窗体中出来,我实现这个想法的一种方法是获取窗体的 X 和 Y 坐标和从我的图形对象的 x 和 y 坐标匹配它,但它不能正常工作我认为表单的 x 和 y 坐标不正确。

以下是我用来检测图形是否在表单内部或外部的代码。

float formX = this.Location.X;
float formY = this.Location.Y;
float formWidth = this.Width;
float formHeight = this.Height;

// x = my graphic x's coordinates
// y = my graphic y's coordinates 
// width = the width of my graphic or the x2 values of my graphic

if ((x > (formX + formWidth) || ((x + width) > (formX + formWidth))
   return true;
else
   return false;

我刚刚在这里提到了简单的代码,并且只有 x 轴,它不能正常工作,即使图形显示在表格的角落, ( formX+ )也更大。width

我希望你明白我的意思,请建议如何摆脱这种情况。

4

1 回答 1

0

当图像离开窗体的左边缘时,相关边缘的 x 坐标将小于 formX。当它离开表单的右侧时,它将大于 formX + formWidth,因此条件前半部分的比较是错误的方式 - 并且正在与错误的值进行比较:

if ((x < formX) || ((x + width) > (formX + formWidth)))
   return true;
else
   return false;

至少,我假设这就是您想要的,逻辑可能与您所追求的相反,但这很容易解决。

您也可以稍微清理一下,因为不需要 if-else 语句:

return (x < formX) || ((x + width) > (formX + formWidth));
于 2013-03-01T09:28:36.683 回答