Я пытаюсь создать приложение Windows Forms, где прямоугольник перемещается по часовой стрелке. Вот изображение. Прямоугольник по часовой стрелке
И вот мой код.
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();
}
}
Я понимаю, почему я не могу идти дальше. Если я делаю новую инструкцию if с x - = 5, она будет активирована одновременно с циклом while. То, что я не могу понять, как отделить новые команды (х - = 5 и у - = 5), поэтому он будет активирован только после моего первого цикла, а закончена.
Мех же идею, но вы набрали быстрее ;-) – h3n
более элегантный способ может быть запомнить направление вы собираетесь, то в каждой итерации проверки, если вы ударить препятствие (в этом случае конец холста), а затем изменить направление, основанное на этом ... – h3n
и, кстати, почему вы делаете это через некоторое время (правда), если вы в конечном итоге нарушаете этот цикл? – h3n