【问题标题】:WPF 4 touch events getting the center of a pinch gestureWPF 4 触摸事件获得捏合手势的中心
【发布时间】:2012-04-13 04:48:01
【问题描述】:

我正在使用 .net 4 beta 2 touch 库,并且尝试在我的 WPF 应用程序中实现缩放功能。

我可以让缩放工作正常,但我想要放大捏合手势的中心,我在 API 中看不到任何关于如何完成此操作的内容。

是否有一些方法或属性可以公开在捏合手势中使用的 2 个联系人,以便我可以得到它们的中心?

编辑:

我刚刚使用TouchEventArgsGetIntermediateTouchPoints 方法进行了调查,这似乎没有给我想要的东西。

非常感谢 标记

【问题讨论】:

    标签: c# .net wpf gestures


    【解决方案1】:

    假设您使用新的TouchXxxxEvent 路由事件,它们都采用TouchEventArgs,它具有TouchDevice 属性。如果调用它的GetTouchPoint()方法,就可以得到代表触摸点的TouchPoint

    来自 Jaime Rodriguez 的更多 details and sample code

    【讨论】:

    • 我目前正在使用TouchDown 事件,但我使用ManipulationDelta 进行实际操作。我可以看到GetIntermediateTouchPoints 方法,这可能是我在这里之后的内容...
    • 不,那个方法似乎没有做我想要的,所以现在我可能必须跟踪联系人然后计算他们两个之间的距离......丑陋!
    【解决方案2】:

    原来我追求的房产一直就在眼前。

    Manipulation2DDeltaEventArgs 类具有特定于捏合手势中心点的 OriginXOriginX 属性,所以我只是使用它,一切都很好:)

    【讨论】:

      【解决方案3】:

      此答案适用于 .Net 4 发行版。

      在使用ManipulationDelta 事件的情况下,ManipulationDeltaEventArgs.ManipulationOrigin 包含捏合手势的中心点。坐标相对于ManipulationDeltaEventArgs.ManipulationContainer,可以在ManipulationStarting 事件的处理程序中设置。

      示例代码:

      private void object_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
      {
          ...
          // If this was a multitouch gesture 
          // (like pinch/zoom - indicated by e.DeltaManipulation.Scale)
          // the following line will get us point between fingers.
          Point position = e.ManipulationOrigin;
          ...
      }
      

      【讨论】:

        猜你喜欢
        • 2023-03-19
        • 2015-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多