Я пытаюсь нарисовать движущийся прямоугольник и окружность на форме, используя метод рисования. Кнопка должна начать процесс. 2-е нажатие должно завершить программу. Переменная Once является глобальным логическим значением, установленным на True при запуске. X1 - это глобальное целое число, установленное на 10 при запуске. Up является глобальным логическим значением, установленным в true при запуске.
На каждой итерации переменная X1 увеличивается до 100, спускаясь до 10, бесконечно.
Я наблюдаю две проблемы следующим образом.
- Нет движения чертежа в форме
- Нет контроля в форме после запуска программы
Ниже приведен код:
private void Form1_Paint(object sender, PaintEventArgs e)
{
Pen red = new Pen(Color.Red,3);
Rectangle rect = new Rectangle(x1, x1, x1, x1);
Rectangle circle = new Rectangle(x1+10, x1 + 10, x1 + 50, x1 + 50);
//Graphics g = e.Graphics;
Graphics g = CreateGraphics();
g.DrawRectangle(red,rect);
g.DrawEllipse(red, circle);
red.Dispose();
g.Dispose();
}
private void button2_Click(object sender, EventArgs e)
{
if (once)
once = false;
else
Environment.Exit(0);
while (true)
{
if (up )
{
x1 += 10;
if (x1 > 100)
up = false;
}
else
{
x1 -= 10;
if (x1 <= 10)
up = true;
}
this.Invalidate();
Thread.Sleep(500);
}
}