如何使对象仅限于表单的边界

时间:2017-10-04 17:31:38

标签: c# winforms

我目前正在使用C#Windows Forms制作太空入侵者类型的游戏。当创建用户控制的激光炮时,我希望它们左右移动,射击激光。这是我目前的运动代码:

if(pictureBox1.Location == new Point(300,300))
            {
                pictureBox1.Location = new Point(pictureBox1.Left - 1);
            }

但是,我有这个问题;如果图像走得太远,它就会超出表格的边界,但我希望它能够反弹并转向另一个方向。

我试过这样做但是无济于事,它只移动一个像素,但我认为这是一个很好的一步(对吗?......):

{{1}}

就像我如何获得整个表单的正确X,Y坐标所以我可以告诉它走另一条路并实际让它移动?

1 个答案:

答案 0 :(得分:1)

要保留在表单内的图片框的最小X和Y位置为0.

图片框中最大的X可以是Form.ClientSize.Width - pictureBox.Size.Width

图片框最大的Y可以是Form.ClientSize.Height - pictureBox.Size.Height

在if语句中检查所有这些内容。如果图片框的X或Y超出范围,请不要移动图片框,否则执行移动它。