簡體   English   中英

WPF中的Google Maps-Like滾動面板

[英]Google Maps-Like Scrolling Panel in WPF

我有一個Canvas,我正在繪制一堆形狀和其他UI元素。 這個畫布可能非常大,所以我想把它放在一個允許我使用鼠標放大/縮小的面板中,並通過拖動鼠標滾動,就像谷歌地圖一樣。 我能找到的最接近的東西是ScrollViewer,但顯然這還不夠。

有沒有人在WPF中完成此任務並擁有任何XAML和/或C#代碼?

上周問過 DeepZoom是否計划用於WPF(因為它可以在Silverlight上使用)。 我收到了這段代碼的鏈接,聽起來非常像你想要的解決方案: 在WPF中平移和放大

這個鏈接會有什么幫助嗎? 我沒有進入WPF,但快速搜索產生了這個鏈接,希望它可以幫助你:

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

我認為你在使用ScrollViewer的大畫布/網格時走在正確的軌道上。 我最近使用相同的設置做了類似的事情。

對於放大和縮小,您可以在畫布的LayoutTransform屬性中使用ScaleTransform,然后將其連接到MouseWheel事件。 您可以將ScaleX和ScaleY更改為“縮放”進出,並且所有畫布的子元素也將“縮放”。

對於平移,您可以隱藏ScrollViewer中的滾動條,並使用MouseMove事件來調用ScrollViewers ScrollToHorizo​​ntalOffset()函數以編程方式移動滾動條。 使用“Optimal Solutions”發布的鏈接,它正是如何做到的。

如果我在我的開發機器上,我可以給你一些示例代碼。

你需要的是一個'虛擬化畫布面板'請看這里的示例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

如果我在這里記得正確,你可以找到你想要的東西。

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

看看這個由薩沙CodeProject上的文章......他有一個FrictionScrollViewer通過拖動鼠標做滾動(還支持一些物理...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM