Как найти направление движения мыши?

1

Мне нужно узнать направление (Влево или Вправо) мыши с момента нажатия мыши.

Я могу использовать только событие OnMouseMove.

Используя следующий метод, я не могу получить направление как e.GetPosition (это).X это то же самое значение, когда мышь перемещается и когда нажимается.

Любая идея, как его решить?

    protected override void OnMouseMove(MouseEventArgs e)
    {
        currentPositionX = e.GetPosition(this).X;

        if (e.LeftButton == MouseButtonState.Pressed)
        {
            double deltaDirection = currentPositionX - e.GetPosition(this).X;
            direction = deltaDirection > 0 ? 1 : -1;
        }
    }
Теги:
wpf
wpf-controls

1 ответ

1
Лучший ответ

Ваше решение почти завершено. Вам просто нужно проверить текущую позицию отдельно для обоих случаев: когда кнопка нажата, а когда нет:

protected override void OnMouseMove(MouseEventArgs e)
{
    if (e.LeftButton == MouseButtonState.Pressed)
    {
        double deltaDirection = currentPositionX - e.GetPosition(this).X;
        direction = deltaDirection > 0 ? 1 : -1;
        currentPositionX = e.GetPosition(this).X;
    }
    else
    {
        currentPositionX = e.GetPosition(this).X;
    }
}

Перемещение вправо приведет к -1 и перемещению влево возвращает 1.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню