Панель прокрутки в стиле Google Maps в WPF - PullRequest
17 голосов
/ 25 сентября 2008

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

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

Ответы [ 6 ]

4 голосов
/ 25 сентября 2008

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

2 голосов
/ 25 сентября 2008

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

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

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

Если бы я был на своем компьютере разработчика, я мог бы дать вам пример кода.

2 голосов
/ 25 сентября 2008

Может ли эта ссылка помочь? Я не попал в WPF, но быстрый поиск дает эту ссылку, и, надеюсь, она вам поможет:

http://blogs.vertigo.com/personal/swarren/Blog/Lists/Posts/Post.aspx?ID=7

1 голос
/ 25 сентября 2008

Здесь вам нужна «Панель виртуализации холста». Пожалуйста, посмотрите образец здесь http://blogs.msdn.com/jgoldb/archive/2008/03/08/performant-virtualized-wpf-canvas.aspx

Подробнее о VirtualizingPanel http://blogs.msdn.com/dancre/archive/2006/02/06/526310.aspx

0 голосов
/ 26 сентября 2008

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

0 голосов
/ 25 сентября 2008

Если я правильно помню, вы можете найти что-то, что вы хотите.

http://www.codeproject.com/KB/vista/swordfishcharts.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...