我从codeplex下载了windows phone工具包,使手机能够接收手势支持。在我的应用程序中,我有一个椭圆。我想创建一种方法,当屏幕接收向上垂直手势时,将逆时针旋转椭圆。顺时针接收向下垂直手势。我在谷歌上花了很多时间,但结果不好,我怎么能实现这个操作呢?
答案 0 :(得分:1)
首先,将RotateTransform指定给要旋转的控件。在这里我使用的是一个矩形,因为它更容易看到它旋转,但它也适用于椭圆:
<Rectangle Fill="Blue" Height="50" Width="50">
<Rectangle.RenderTransform>
<RotateTransform x:Name="RotateTransform" />
</Rectangle.RenderTransform>
</Rectangle>
然后,订阅您网页的ManipulationDelta
事件:
<phone:PhoneApplicationPage
x:Class="..."
various stuff
ManipulationDelta="PhoneApplicationPage_ManipulationDelta">
在事件处理程序中,使用e.DeltaManipulation.Translation
来了解手指在X和Y轴上移动了多少。然后,相应地旋转您的形状:
private void PhoneApplicationPage_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
this.RotateTransform.Angle += e.DeltaManipulation.Translation.Y;
}
如果您希望您的形状以不同的速度旋转,则将e.DeltaManipulation.Translation.Y
乘以常数(&gt; 1以加速旋转,&lt; 1以使其减慢速度)。此外,如果您不想在手指对角移动时旋转形状,请检查e.DeltaManipulation.Translation.X
的值,并仅在小于e.DeltaManipulation.Translation.Y
的情况下应用旋转(您不能只检查如果它等于0,因为在做垂直手势时手指总是会略微向左或向右移动。)