У меня есть scrollViewer WPF, который я использую для панорамирования (MouseDown, MouseMove, MouseUp), и я хотел бы включить эффект ускорения, который включает инерцию. Таким образом, если мышь перемещается за пределы пороговой скорости, и я отпускаю мышь, она продолжает кастрюлю, но замедляется как функция начальной скорости. Любые идеи, мысли или примеры?Как включить скорость и/или ускорение в (scrollviewer) WPF?
ответ
Я сделал это раньше и начал с просмотра ScrollViewer, но в конце концов отбросил его и использовал Viewbox с Canvas в качестве дочернего элемента для абсолютного позиционирования контента (я поддерживал масштабирование aswel как свиток, это было в основном DeepZoom без масштабированных изображений для масштабирования, поэтому при масштабировании вправо была пикселизация). Я написал код для определения направления жестов и скорости жестов из событий мыши и преобразовал его в направление и скорость прокрутки, а затем анимировал свойства Canvas.Left и Canvas.Top прокручиваемого содержимого (которое было в коллекции «Дети» дочернего холста Boxbox) с DoubleAnimation. Он работал хорошо, однако может быть лучший способ ... heres нить, предлагающая хостинг DeepZoom в WPF через элемент управления Frame (хотя я бы этого не делал).
EDIT: В основном ScrollViewer был слишком ограниченным. Даже если вы попадаете в ControlTemplate и получаете ссылки на ScrollBars напрямую, это позиция Thumb этих полос прокрутки, которые вам нужно оживить, и я уверен, что это то, что я нашел, что я не мог сделать (это было почти 3 года назад :)
Отличный пример Саймона. Теперь посмотрим. – Brad
Вы говорите прокрутку в стиле iPhone на основе жестов мыши? –
Да, более или менее. – Brad