我做了一个太空入侵者游戏。起初,每当我移动鼠标时游戏都会变慢,因为我有鼠标移动事件,所以有人告诉我这是我的无效方法。我相应地改变它,游戏速度更好。但它现在还没有清除旧图像。它留下了一串图像。
请帮忙!
Mouse_move事件
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
Cursor.Dispose();
objsp.gsPos = new Point(MousePosition.X / 2 - 10, MousePosition.Y / 2 - 15);
UpdatePosition(objsp.gsPos.X, objsp.gsPos.Y, objsp.gsImage);
}
正在调用的UpdatePosition方法
private void UpdatePosition(int dx, int dy, Image img)
{
Point newPos = new Point(objsp.gsPos.X + dx, objsp.gsPos.Y + dy);
//dont go out of window boundary
newPos.X = Math.Max(0, Math.Min(ClientSize.Width - img.Width, newPos.X));
newPos.Y = Math.Max(0, Math.Min(ClientSize.Height - img.Height, newPos.Y));
if (newPos != objsp.gsPos)
{
objsp.gsPos = newPos;
Rectangle rc = new Rectangle(objsp.gsPos, img.Size);
Invalidate(rc);
}
}
表单加载输出
移动鼠标后输出
答案 0 :(得分:1)
在UpdatePosition
中使当前和之前的鼠标位置无效。