движение мыши по холсту останавливает таймер - PullRequest
1 голос
/ 01 мая 2020

Есть ли другой способ, кроме остановки, который не позволит компьютеру отслеживать положение мыши относительно геометрических объектов?

У меня есть две панели, содержащие кнопки и текстовые поля на каждой стороне окна WPF. Между двумя панелями находится холст. Таймер работает 10 раз в секунду и отображает числа от 1 до 10 в текстовом поле на боковой панели. У холста есть дочерний элемент, который является временным холстом, который я создал и содержит много строк. Временный холст загружается с группой геометрии (много строк) через путь, а затем добавляется в основной холст как дочерний. Проблема в том, что ... когда моя мышь перемещается по боковым панелям, таймер показывает хорошее время, а цифры от 1 до 10 идеально отображаются в текстовом поле. Увеличение и уменьшение также очень быстро. Когда я перемещаю мышь по холсту, числа в текстовом поле замедляются и даже останавливаются, когда мышь быстро перемещается по холсту. Задача изолирована от геометрической группы. Когда я это прокомментирую, проблема исчезнет.

Я попытался заморозить группу геометрии и кисти. НЕТ изменений в таймере замедления. Я удалил событие переезда canvas_mouse. НЕТ изменения в таймере замедления. Я сделал геометрическую группу меньше (меньше линий). Лучшая скорость в таймере, но все еще медленная.

Есть ли другой способ, кроме остановки, который не позволит компьютеру отслеживать положение мыши относительно геометрических объектов?

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

       TempCanvas.Children.Clear()


        Dim myPathPXF As Path = New Path
        myPathPXF.Stroke = Brushes.Black
        myPathPXF.StrokeThickness = 10
        myPathPXF.Data = myGeometryGroupPXF
        TempCanvas.Children.Add(myPathPXF)   'mouse movement over canvas stops program with this line

        'created in world coordinates and render to screen coordinates
        TempCanvas.RenderTransform = myTransformGroup

    'show on plan view canvas
    PlanViewCanvas.Children.Clear()
    PlanViewCanvas.Children.Add(TempCanvas)

Я искал в Интернете несколько дней и не смог найти никого с такой же проблемой. Заранее благодарю за любую помощь.

Геометрическая группа имеет около 1000 строк.

Только что обнаружил, что когда я открываю диалог, таймер работает с правильной скоростью, потому что мышь больше не отслеживается Я предполагаю.

РЕДАКТИРОВАТЬ: я использовал Visual Studio 2019. Я только что пропустил свой код через Visual Studio 2015 и проблема исчезла.

1 Ответ

2 голосов
/ 02 мая 2020

Проблема, похоже, не связана с геометрической группой. Когда я перешел с Visual Studio 2019 на Visual Studio 2015, проблема исчезла.

...