WP8工具包GestureListener捏手势 - 进或出?

时间:2013-12-08 00:51:59

标签: c# windows-phone-8

我在XAML中有这个:

<toolkit:GestureService.GestureListener>
    <toolkit:GestureListener PinchCompleted="GestureListener_PinchCompleted"/>
</toolkit:GestureService.GestureListener>

如您所见,它会在完成夹点时创建一个事件处理程序。我的代码中有这个:

private void GestureListener_PinchCompleted(object sender, PinchGestureEventArgs e)
{
    //how do I determine whether it was a pinch in or pinch out gesture?
}

当此事件触发时,我想知道手势是捏还是捏(即,我们是分别缩小还是放大)。

这是我可以访问的所有内容:

e.DistanceRatio
e.Handled
e.OriginalSource
e.TotalAngleDelta

我只需要知道用户是想要“放大”还是放大 - 我可以处理动画和其他所有内容。

3 个答案:

答案 0 :(得分:0)

PinchStarted="OnPinchStarted"  add event in XAML


private void OnPinchStarted(object sender, PinchStartedGestureEventArgs e)
{

}

检测Pinch start的第一个坐标和

private void GestureListener_PinchCompleted(object sender, PinchGestureEventArgs e)
{

}

尝试确定。我想答案是如果你不能访问坐标,那么在e.DistanceRatio

我认为e.DistanceRatio - 将返回手指之间的距离。

所以如果OnPinchStart它是2厘米而在PinchEnd它是1厘米=放大

答案 1 :(得分:0)

e.DistanceRatio确定之间的距离之间的距离之间/距离之间的距离。从而制作它

if(e.DistanceRatio > 1){
//Zoom in
} else {
// Zoom out
}

答案 2 :(得分:0)

忘了早点发布。距离比率并不完全有效,因为它并不总是正确的。我这样做了:

private void GestureListener_PinchStarted(object sender, PinchStartedGestureEventArgs e)
{
    initialDistance = e.Distance;
}

private void GestureListener_PinchCompleted(object sender, PinchGestureEventArgs e)
{
    double distance2 = e.DistanceRatio * initialDistance;

    if (initialDistance > distance2)
    {
        //zoom out
    }
    else if (initialDistance < distance2)
    {
        //zoom in
    }
}