我正在尝试制作一个Windows窗体应用程序,其中矩形顺时针移动。这是图片。
c# - 矩形顺时针运动-LMLPHP

这是我的代码。

public partial class Form1 : Form
{
    int x;
    int y;

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        e.Graphics.FillRectangle(Brushes.Crimson, x, y, 20, 20);
    }

    private void movingTimer_Tick(object sender, EventArgs e)
    {
        while (true)
        {
            if (x < 750)
            {
                x += 5;
            }
            else if (x == 750 && y < 340)
            {
                y += 5;
            }
            break;
        }

        Invalidate();
    }
}


我明白为什么我不能走得更远。如果我用x-= 5进行新的if语句,它将与while循环同时激活。
我不明白的是如何分隔新命令(x-= 5和y-= 5),因此只有在我的第一个while循环结束后才能激活它。

最佳答案

由于我不知道您要从那里去哪里,我将为您提供最稳定的解决方案:

if (y <= 0 && x < 750)
{
    x += 5;
}
else if (x == 750 && y < 340)
{
    y += 5;
}
else if (y >= 340 && x > 0)
{
    x-=5;
}
else if (y > 0 && x <= 0)
{
    y-=5;
}
break;


您可能需要稍微调整一下值,但是我想您可以从这里弄清楚。

08-26 14:56