检查图片框是否触摸屏幕上的任何对象 C#

本文关键字:任何 对象 屏幕 触摸屏 是否 触摸 检查 | 更新日期: 2023-09-27 18:30:51

我在 C# 上编码的游戏有问题。我尝试在论坛上搜索此问题,但没有一个适用于这种情况:/

我正在尝试检查图片框是否点击屏幕中的任何其他图片框。

我已经尝试过这个,但是当我添加更多对象时,这可能太慢了。

if (!square.Bounds.IntersectsWith(grass.Bounds) && !square.Bounds.IntersectsWith(grMiddle.Bounds) && !square.Bounds.IntersectsWith(grRight.Bounds) && !square.Bounds.IntersectsWith(middle.Bounds) && !square.Bounds.IntersectsWith(sideRight.Bounds) && !square.Bounds.IntersectsWith(topPanel.Bounds))

这种方法不起作用,因为玩家移动增加了 100 倍,我立即死亡,不知何故......

foreach (PictureBox pic in this.Controls.OfType<PictureBox>())
        {
            if (pic != square)  // exclude square PictureBox from the test
            {
                if (!square.Bounds.IntersectsWith(pic.Bounds))
                {
                    if (!square.Bounds.IntersectsWith(rightGoal.Bounds))
                    {
                        if (Right) { square.Left += 5; }
                        if (Left) { square.Left -= 5; }
                        if (Up) { square.Top -= 5; }
                        if (Down) { square.Top += 5; }
                    }
                    else
                    {
                        pally.points++;
                        rightPoints.Text = pally.points.ToString();
                        square.Location = new Point(690, 533);
                    }
                }
                else
                {
                    square.Location = new Point(690, 533);
                }
            }
        }

我没有想法,一些帮助会很好:)

检查图片框是否触摸屏幕上的任何对象 C#

                    if (Right) { square.Left += 5; }
                    if (Left) { square.Left -= 5; }
                    if (Up) { square.Top -= 5; }
                    if (Down) { square.Top += 5; }

这些是在测试键盘输入还是什么?您正在使用此代码移动正方形。您正在为表单上的每个图片框执行此操作。这就是为什么你的方块移动得太远。将您的位置更新代码与交叉点代码分开应该可以解决您的问题。