我试图在屏幕上绘制一个矩形并使其移动,但是当我按下一个键时,它会延迟然后走动。
让我们想象一下,我想按“ W”键前进,然后突然想通过按“ A”键向左转,当我按“ A”键时,这会给我一个延迟。这是下面的矩形形式发生的情况
我尝试将计时器作为一种解决方案,但我做不到。
public Form1()
{
InitializeComponent();
r = new Rectangle(new Point(4, 4), new Size(8, 8));
}
private Rectangle r;
private Keys keys;
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
timer1.Enabled = false;
}
private void Timer1_Tick(object sender, EventArgs e)
{
switch (keys)
{
case Keys.W:
r.Y -= 5;
break;
case Keys.S:
r.Y += 5;
break;
case Keys.D:
r.X += 5;
break;
case Keys.A:
r.X -= 5;
break;
default:
break;
}
this.Invalidate();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.FillRectangle(new SolidBrush(Color.Red), r);
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
timer1.Enabled = true;
keys = e.KeyCode;
}
我想通过按任意键无延迟地移动矩形
答案 0 :(得分:0)
启用计时器后,只需立即调用计时器处理程序即可。
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
timer1.Enabled = true;
Timer1_Tick(this, new EventArgs());
}