2010-01-21 47 views
4

我正在使用.NET 4 beta 2触摸库,并试图在我的WPF应用程序中实现缩放功能。WPF 4触摸事件获取捏手势的中心

我可以使缩放工作得很好,但我想要的是放大缩小手势的中心,并且我看不到有关如何完成此操作的API中的任何内容。

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

编辑:

我只是用的TouchEventArgsGetIntermediateTouchPoints方法,它似乎并没有给我我想要什么样的影响。

非常感谢 马克

回答

0

原来我以前的属性一直在我的面前。

Manipulation2DDeltaEventArgs类有OriginXOriginX性质特定缩放手势的中心点,所以我只是使用其所有好的:)

0

假设你正在使用的新TouchXxxxEvent路由事件,他们都采取TouchEventArgs,其中有TouchDevice财产。如果您拨打GetTouchPoint()方法,则可以获取代表触摸点的TouchPoint

更多details and sample code来自Jaime Rodriguez。

+0

我使用此刻的'TouchDown'事件,但使用'ManipulationDelta'的实际操纵林。我可以看到'GetIntermediateTouchPoints'方法,这可能是在这里后im ... – Mark

+0

不是那种方法似乎没有做我想做的事情,所以现在我可能不得不跟踪接触,然后计算两者之间的距离他们...难看! – Mark

0

这个答案是对.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; 
    ... 
}