Отрисовка по нажатию клавиши - 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(); //перерисовываем
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д