【问题标题】:cannot make a moving picturebox stop at a specific point无法使移动图片框停在特定点
【发布时间】:2018-06-04 14:42:41
【问题描述】:

我必须创建一个交通模拟器,我想在红绿灯不是红色时移动汽车(图片框),并在红绿灯处停下来。 红绿灯是 3 个变色的面板。

我的问题是我的车遇到红灯时没有停下来。我已经尝试过“pictureBox.Location.X”和“pictureBox.Left”,但它不起作用,pictureBox 只是继续移动。 当汽车遇到红绿灯时,我还尝试抛出一个消息框,以查看“pictureBox.Location.X”是否正常工作,但仍然没有。好像不认识这个功能。

我尝试使用面板和图片框制作交通灯,但仍然相同。

到目前为止,我将我的代码发送给您:

    private void timerCar1_Tick(object sender, EventArgs e)
            {
                //timerCar2.Enabled = true;

                if(panelRed.BackColor == Color.Red)
                {
                    car1.Left -= 5;
                }                
 /* ---> */     else if (car1.Location.X == panelGreen.Location.X & panelRed.BackColor == Color.Red)
                {
                    car1.Left -= 0;
                }
                else if (panelGreen.BackColor == Color.Green)
                {
                    car1.Left -= 20;
                }
                else if (panelOrange.BackColor == Color.Orange)
                {
                    car1.Left -= 10;
                }

            }

【问题讨论】:

  • 您发布的代码似乎超出了您的问题的合理范围。请阅读 How to Ask 以及如何制作 minimal reproducible example,提供 MCVE 可以帮助用户回答您的问题以及未来的用户与您的问题相关。
  • 是时候学习调试代码了。设置断点,观察变量,一次执行一行代码,检查预期的代码分支到实际。根据需要进行修复。它也是过去阅读How to Ask 并采取tour 的时间。您不需要 3 个计时器来运行一个红绿灯。
  • 似乎移动和停止车辆的算法在timerCar1_Tick方法中。因此,您可以从您的问题中删除所有其他代码并解释:1) 您在该代码中尝试做什么2) 解释panelRed 等是什么。然后我们将能够为您提供帮助。现在,我无法弄清楚您在该代码中在做什么。加上其余的代码只是噪音。
  • 抱歉,打扰了,这是我第一次使用 Staack Overflow,我希望我现在说得更清楚了。我有三个面板一个接一个地用作交通灯,panelRed 是红色时的交通灯,它们三个都是垂直对齐的。因此,当 panelRed 为红色且汽车在面板下方时,我想(汽车)停下来。

标签: c# picturebox simulator traffic


【解决方案1】:

你使用 &。

 else if (car1.Location.X == panelGreen.Location.X & panelRed.BackColor == Color.Red)

我有heard 这可能会导致意外行为。您的意思是使用逻辑“AND”(&&)吗?

 else if (car1.Location.X == panelGreen.Location.X && panelRed.BackColor == Color.Red)

【讨论】:

    【解决方案2】:

    我认为在 c# 中,对于逻辑“AND”,ypu 可以同时使用 & 和 &&。通过将像素移动从 += 20 更改为 += 3 解决了这个问题,所以我认为我的图片框不会满足我设置为停止点的点,因为它移动了 20 20 个像素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-12
      • 2012-10-22
      • 2021-12-01
      • 2015-04-22
      • 2013-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多