我有写代码来移动多个矩形 这里。 moving rectangles one by one
然而,为了使我的代码整洁,我使用class和foreach循环以下面的方式重写了它。但这一次,我无法一个接一个地移动它们。有什么想法解决它吗? 提前谢谢了。
在我的object.cs类中:
public bool GetSelected(int x, int y)
// public Rectangle GetSelected(List<Rectangle> squares)
{
bool GetSelected = false;
MouseState mouse = Mouse.GetState();
// Rectangle mousePosition = new Rectangle(mouse.X, mouse.Y, 200, 80);
if (drawRectangle.Contains(mouse.X, mouse.Y) && (mouse.LeftButton == ButtonState.Pressed))
{
GetSelected = true;
}
return GetSelected;
}
在main.cs的代码中,我使用以下内容移动矩形。但是,如果我有多个矩形,如果某些矩形重叠,我怎样才能每次选择一个矩形? 感谢。
foreach (Chemtile chemtile in tiles)
{
if (chemtile.GetSelected(mouse.X, mouse.Y))
{
chemtile.drawRectangle.X = mouse.X - BoxWidth / 2;
chemtile.drawRectangle.Y = mouse.Y - BoxHeight / 2;
}
}
答案 0 :(得分:0)
你需要做一些电话Hit-Testing
。基本上从屏幕的“顶部”到底部循环您的矩形。包含单击边界的第一个矩形是单击的矩形。找到第一个矩形后,您应该停止搜索。
使这项工作的关键是矩形需要以自上而下的顺序进行测试,它们在屏幕上以可视方式显示,并且只返回包含该点的第一个矩形。