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

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

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

По нажатию клавиши нужно вывести на экран прямоугольник и двигать его вперёд пока он не достигнет границы формы. Проблема же в том он не хочет рисоваться вне события Paint
Листинг программы
  1. private void Form1_KeyDown(object sender, KeyEventArgs e)
  2. {
  3. if (e.KeyData == Keys.Space)
  4. {
  5. Bullet.FillRectangle(System.Drawing.Brushes.Green, 15, 70, 70, 100);
  6. }
  7. Refresh();
  8. }
  9. private void Form1_Paint(object sender, PaintEventArgs e)
  10. {
  11. Bullet = CreateGraphics();
  12. }
  13.  
  14. переменная Bullet задана глобально public Graphics Bullet;

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

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

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


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

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

7   голосов , оценка 3.571 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы