我在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
我只需要知道用户是想要“放大”还是放大 - 我可以处理动画和其他所有内容。
答案 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
}
}