我明天有一个测试,我们必须使用绘制事件来重绘我们的对象,我们可能不使用计时器。
正如 MSDN 所说:“重绘控件时会引发 Paint 事件。”,但据我所知,只有当表单最小化或变得不可见并重新可见时才会发生这种情况.
我的代码:
public partial class Form1 : Form { public Graphics drawArea; public int xPos, yPos; public Form1() { InitializeComponent(); } private void Form1_Paint(object sender, PaintEventArgs e) { drawArea = e.Graphics; DrawUser(); } private void Form1_KeyDown(object sender, KeyEventArgs e) { switch (e.KeyCode) { case Keys.Down: yPos++; break; case Keys.Up: yPos--; break; case Keys.Left: xPos--; break; case Keys.Right: xPos++; break; } } private void DrawUser() { drawArea.FillRectangle(new SolidBrush(Color.Red), xPos, yPos, 50, 50); } }
因此,当我多次按下方向键时,对象仅在我重新调整表单大小后才移动。我希望它立即移动,仅使用绘制事件。
谢谢
最佳答案
我找到了!
通过在按键后添加 this.Invalidate();
。这将告诉绘制事件重绘。
关于c# - 使用绘制事件移动对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18602531/