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

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

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


person Community    schedule 25.09.2008    source источник
comment
+1 к этому вопросу - я тоже хочу увидеть что-то подобное! знак равно   -  person Erik Forbes    schedule 25.09.2008


Ответы (6)


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

person Ray Hayes    schedule 25.09.2008

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

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

person Taptronic    schedule 25.09.2008

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

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

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

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

person Dylan    schedule 25.09.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

person Jobi Joy    schedule 25.09.2008

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

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

person ArielBH    schedule 25.09.2008

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

person rudigrobler    schedule 26.09.2008