Xaml 如何在WinRT中通过一个手指触摸获得总旋转角度?

Xaml 如何在WinRT中通过一个手指触摸获得总旋转角度?,xaml,windows-8,windows-runtime,windows-phone-8.1,windows-8.1,Xaml,Windows 8,Windows Runtime,Windows Phone 8.1,Windows 8.1,我正试图通过以下方式进行拨号控制。由于方法GetAngle基于接触点的位置,因此计算的角度始终等于或小于360°。但我需要的是,如果我把结旋转两个半圈,我想得到900°(360°*2+180°) 我知道e.Cumulative.Rotation(e是操作DeltaroutedEventArgs)可以给我总的旋转角度,但看起来旋转只能由两个手指触发 我是否错过了一些简单的解决方案???我花了一段时间在这个问题上,结果证明它是一个很好的程序。最后,我给出了一个不同的解决方案,如下所示 如果需要计算整

我正试图通过以下方式进行拨号控制。由于方法
GetAngle
基于接触点的位置,因此计算的角度始终等于或小于360°。但我需要的是,如果我把结旋转两个半圈,我想得到
900°(360°*2+180°)

我知道
e.Cumulative.Rotation
e
操作DeltaroutedEventArgs
)可以给我总的旋转角度,但看起来旋转只能由两个手指触发


我是否错过了一些简单的解决方案???

我花了一段时间在这个问题上,结果证明它是一个很好的程序。最后,我给出了一个不同的解决方案,如下所示

如果需要计算整圈,那么需要记住角度从360度变为0的时刻,并记住有一个整圈。在我的例子中,我记住了最后一个象限,这有助于我处理这个问题。主代码如下所示:

private Quadrants currentQuadrant=Quadrants.I;
专用象限lastQuadrant=象限.I;
私人双lastAngle=0;
公共枚举象限{I、IV、III、II}//逆时针象限
专用双重检查角度(点接触点、大小边界)
{
//查找相对于边界的点位置
double valX=接触点.X-(bounds.Width/2d);
双谷=(bounds.Height/2d)-接触点.Y;
//确定象限并保存它
当前象限=(valX>=0)?
(谷>=0)?象限I:象限IV:
(谷>=0)?象限II:象限III;
双象限角度=Math.Atan(valX/valY)*(180/Math.PI);//计算象限内的角度
返回电流象限==象限II?360+象限角度:
当前象限!=象限。I?180+象限角:象限角;
}
专用空心栅格_操纵增量(对象发送器,操纵增量路由导出器)
{
double currentAngle=检查角度(即位置,此渲染);
if(Math.Abs(lastAngle-currentAngle)<1)返回;//不总是更新UI-性能
if(currentQuadrant==Quadrants.I&&lastQuadrant==Quadrants.II)//检查整圈
{spinNumber++;RaiseProperty(“spinNumber”);}
else if((currentQuadrant>lastQuadrant+1))返回;//检查移动是否正确
//更新象限和角度
最后象限=当前象限;
角度=最后角度=当前角度;
}
私有空心网格\u操作已完成(对象发送方,操作已完成路由目标e)
{
//重置所有东西
角度=lastAngle=spinNumber=0;
currentQuadrant=lastQuadrant=Quadrants.I;
}
还有一些XAML部分:



请注意,如果您从第一象限开始顺时针移动手指,这将起作用。它还需要一些改进,比如逆时针移动时的处理,特别是从0度到360度的变化

我想在这种情况下,你必须跟踪手指的运动,一旦它沿着弧线路径通过起点,就把它当作一个完整的圆周运动。@Romasz,这是我无法理解的一点。:(谢谢!!使用象限非常棒,这足以让我走了。