Как включить скорость и / или ускорение в средство просмотра (WPF)?

У меня есть WPF scrollViewer, который я использую для панорамирования (MouseDown, MouseMove, MouseUp), и я хотел бы включить эффект ускорения, включающий инерцию. Итак, если мышь выходит за пределы пороговой скорости, и я отпускаю мышь, она продолжает панорамирование, но замедляется как функция начальной скорости. Есть идеи, мысли или примеры?

1 ответ

Решение

Я сделал в основном это раньше и начал с просмотра ScrollViewer, но в конце концов выбросил его и использовал Viewbox с Canvas в качестве дочернего элемента для абсолютного позиционирования контента (я поддерживал zoom aswel в качестве прокрутки, это был в основном DeepZoom без масштабируемые изображения для увеличения, чтобы была пикселизация при увеличении). Я написал код для определения направления жеста и скорости жеста по событиям мыши и преобразовал его в направление и скорость прокрутки, а затем анимировал свойства Canvas.Left и Canvas.Top прокручиваемого содержимого (которое было в коллекции Children). дочернего холста Viewbox) с DoubleAnimation. Это сработало хорошо, но, может быть, есть и лучший способ... вот поток, предлагающий размещение DeepZoom в WPF через элемент управления Frame (хотя я бы так не сделал).

РЕДАКТИРОВАТЬ: в основном ScrollViewer был слишком ограничен. Даже если вы попадете в ControlTemplate и получите ссылки на полосы прокрутки напрямую, именно положение большого пальца этих полос прокрутки вам нужно будет анимировать, и я почти уверен, что это то, что я не смог сделать (это было почти 3 года назад:)

Другие вопросы по тегам