Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何找出在C#WinForms中两个图片框何时发生碰撞_C#_Winforms - Fatal编程技术网

如何找出在C#WinForms中两个图片框何时发生碰撞

如何找出在C#WinForms中两个图片框何时发生碰撞,c#,winforms,C#,Winforms,我正在做一个游戏,如果两个物体(两个图片框的形状)碰撞,用户将失去一条生命。但是,我不确定如何使用if-else或switch-case语句来确定它们何时发生碰撞。我试着用这个,但它似乎不太多,所以当一个图片框的位置是准确的另一个,它会做一些事情。这只是一种实践,在这一部分中使用了条件语句,因此它没有起到多大作用: if(pictureBox1.Location == pictureBox2.Location) { pictureBox1.

我正在做一个游戏,如果两个物体(两个图片框的形状)碰撞,用户将失去一条生命。但是,我不确定如何使用if-else或switch-case语句来确定它们何时发生碰撞。我试着用这个,但它似乎不太多,所以当一个图片框的位置是准确的另一个,它会做一些事情。这只是一种实践,在这一部分中使用了条件语句,因此它没有起到多大作用:

if(pictureBox1.Location == pictureBox2.Location)
            {
                pictureBox1.Location = new Point(pictureBox1.Left - 10);
            }

创建
矩形
s并检查交点:

var rect1 = new System.Drawing.Rectangle(pictureBox1.Location, pictureBox1.Size);
var rect2 = new System.Drawing.Rectangle(pictureBox2.Location, pictureBox2.Size);

if (rect1.IntersectsWith(rect2))
{
    // Here is your collision.
}

研究检测2d碰撞的算法。这里有一个很好的开始@SamMarion的地方谢谢你的链接,我会研究一下。你的代码不起作用的原因是因为位置是pictureBox(左上角)的一个特定点。唯一的方法是,如果每个图片框的左上角在同一点上(而且也只有当它们引用同一个点对象时,我相信,因为您使用的是==而不是.Equals)。非常感谢,这真的很有帮助!我会认真考虑这些评论,希望看到一个好的结果