WPF 中类似谷歌地图的滚动面板

本文关键字:滚动 谷歌地图 WPF | 更新日期: 2023-09-27 17:47:21

我有一个画布,我正在绘制一堆形状和其他UI元素。 这个画布可能非常大,所以我想把它放在一个面板中,允许我使用鼠标放大/缩小并通过拖动鼠标滚动,就像谷歌地图一样。我能找到的最接近的东西是ScrollViewer,但显然这还不够接近。

有没有人在 WPF 中执行此操作并拥有任何 XAML 和/或 C# 代码?

WPF 中类似谷歌地图的滚动面板

上周我问过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 事件调用 ScrollViewer ScrollToHorizontalOffset() 函数以编程方式移动滚动条。使用"最佳解决方案"发布的链接,这正是如何做到的。

如果我在我的开发机器上,我可以给你一些示例代码。

您需要的是一个"虚拟化画布面板" 请在此处查看示例 http://blogs.msdn.com/jgoldb/archive/2008/03/08/performant-virtualized-wpf-canvas.aspx

更多关于 虚拟化面板 http://blogs.msdn.com/dancre/archive/2006/02/06/526310.aspx

如果我没记错的话,你可以找到你想要的东西。

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

看看 Sacha 的这篇 CodeProject 文章...他有一个FrictionScrollViewer,可以通过拖动鼠标进行滚动(也支持一些物理...