Подтвердить что ты не робот

Панель прокрутки Google Maps-Like в WPF

У меня есть Canvas, где я рисую кучу фигур и других элементов пользовательского интерфейса. Этот холст может быть очень большим, поэтому я хочу поместить его в панель, которая позволяет мне увеличивать/уменьшать масштаб с помощью мыши и прокручивать, перетаскивая мышь, подобно Google Maps. Самое близкое, что я мог найти, это ScrollViewer, но, очевидно, это недостаточно близко.

Кто-нибудь сделал это в WPF и имел какой-нибудь код XAML и/или С#?

4b9b3361

Ответ 1

I спросил на прошлой неделе, был ли DeepZoom запланирован для WPF (поскольку он доступен в Silverlight). Я получил ссылку на этот код, который очень похож на ваше желаемое решение: Pan и Zoom в WPF

Ответ 3

Я думаю, что вы на правильном пути, используя большой холст/сетку с ScrollViewer. Недавно я сделал что-то подобное, используя ту же настройку.

Для увеличения и уменьшения масштаба вы можете использовать ScaleTransform в свойстве LayoutTransform холста, а затем подключить его к событию MouseWheel. Вы можете изменить ScaleX и ScaleY на "масштабирование", и все дочерние элементы canvas будут также "масштабироваться".

Для панорамирования вы можете скрыть полосы прокрутки в ScrollViewer и использовать событие MouseMove для вызова функции ScrollToHorizontalOffset() ScrollViewers ScrollToHorizontalOffset() для плавного перемещения полос прокрутки. Используйте ссылку, которую "Оптимальные решения" отправили, это как раз то, как это сделать.

Если бы я был на моей машине dev, я мог бы дать вам пример кода.

Ответ 6

Откажитесь от this Статья CodeProject от Sacha... У него есть FrictionScrollViewer, который выполняет прокрутку, перетаскивая мышь (также поддерживает некоторую физику...)