Отрисовка по нажатию клавиши - C#

Узнай цену своей работы

Формулировка задачи:

По нажатию клавиши нужно вывести на экран прямоугольник и двигать его вперёд пока он не достигнет границы формы. Проблема же в том он не хочет рисоваться вне события Paint
 private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Space)
            {
                Bullet.FillRectangle(System.Drawing.Brushes.Green, 15, 70, 70, 100);
 
            }
            Refresh();
        }
 
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
           Bullet = CreateGraphics();
        }

переменная Bullet задана глобально public Graphics Bullet;

Решение задачи: «Отрисовка по нажатию клавиши»

textual
Листинг программы
int x, y, width=100, height=40;
private void Form1_Load(object sender, EventArgs e)
{
    x = this.Width / 2 - width / 2; //начальное положнеие
    y = this.Height / 2 - height / 2; //почти по центру формы
}
 
private void Form1_Paint(object sender, PaintEventArgs e)
{
    e.Graphics.FillRectangle(Brushes.Green, new Rectangle(x, y, width, height)); //рисуем
}
 
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyData == Keys.Up) y -= 5; //двигаем вверх
    if (e.KeyData == Keys.Down) y += 5; //виниз
    if (e.KeyData == Keys.Left) x -= 5; //влево
    if (e.KeyData == Keys.Right) x += 5; //вправо
    this.Invalidate(); //перерисовываем
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.571 из 5
Похожие ответы