Отрисовка по нажатию клавиши - 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(); //перерисовываем
}