【问题标题】:Google Maps-Like Scrolling Panel in WPFWPF 中的 Google Maps-Like 滚动面板
【发布时间】:2008-09-25 17:09:22
【问题描述】:

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

有没有人在 WPF 中做过这个并且有任何 XAML 和/或 C# 代码?

【问题讨论】:

  • +1 这个问题 - 我也想看到这样的东西! =)

标签: c# .net wpf


【解决方案1】:

asked last week DeepZoom 是否计划用于 WPF(因为它在 Silverlight 上可用)。我收到了此代码的链接,这听起来很像您想要的解决方案:Pan and Zoom in WPF

【讨论】:

    【解决方案2】:

    此链接有帮助吗?我还没有进入 WPF,但是快速搜索会产生这个链接,希望它可以帮助你:

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

    【讨论】:

      【解决方案3】:

      我认为您在使用带有 ScrollViewer 的大画布/网格方面走在了正确的轨道上。我最近使用相同的设置做了类似的事情。

      对于放大和缩小,您可以在画布的 LayoutTransform 属性中使用 ScaleTransform,然后将其连接到 MouseWheel 事件。您可以将 ScaleX 和 ScaleY 更改为“放大”和缩小,画布的所有子元素也将“放大”。

      对于平移,您可以在 ScrollViewer 中隐藏滚动条,并使用 MouseMove 事件调用 ScrollViewers ScrollToHorizo​​ntalOffset() 函数以编程方式移动滚动条。使用“最佳解决方案”发布的链接,正是这样做的。

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

      【讨论】:

        【解决方案4】:

        您需要的是“虚拟化画布面板”,请在此处查看示例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

        【讨论】:

          【解决方案5】:

          如果我没记错的话,你可以在这里找到你想要的。

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

          【讨论】:

            【解决方案6】:

            查看 Sacha 的 thisCodeProject 文章...他有一个 FrictionScrollViewer,通过拖动鼠标进行滚动(还支持一些物理...)

            【讨论】:

              猜你喜欢
              • 2011-01-08
              • 2018-07-03
              • 1970-01-01
              • 2015-01-21
              • 1970-01-01
              • 1970-01-01
              • 2017-08-02
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多