движение мыши оставляет следы изображения - PullRequest
0 голосов
/ 27 ноября 2011

Я сделал игру космического захватчика.Сначала игра шла медленно, когда я перемещал мышь, потому что у меня было событие перемещения мыши, поэтому кто-то сказал мне, что это мой метод аннулирования.Я изменил его соответственно, и скорость игры стала лучше.но теперь это не очищает старое изображение.он оставляет след изображений.

Пожалуйста, помогите!

Событие 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);               
        }
    }

Вывод формы нагрузки enter image description here

После перемещения мыши выведите

enter image description here

1 Ответ

1 голос
/ 27 ноября 2011

In UpdatePosition делает недействительной текущую и предыдущую позицию мыши.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...