我已经从 codeplex 下载了 windows phone 工具包,它使手机能够接收手势支持。在我的应用程序中,我有一个椭圆。我想创建一个方法,当屏幕接收到向上垂直手势时逆时针旋转椭圆,当它接收到向下垂直手势时顺时针旋转椭圆。我在google上花了很多时间但效果不佳,我该如何实现这个操作?
问问题
577 次
1 回答
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
一个常数(> 1 加速旋转,< 1 减慢旋转速度)。此外,如果您不希望在手指沿对角线移动时旋转形状,请检查 的值e.DeltaManipulation.Translation.X
并仅在它小于时才应用旋转e.DeltaManipulation.Translation.Y
(您不能只检查它是否等于 0,因为手指会做垂直手势时总是稍微向左或向右移动)。
于 2013-07-28T13:24:28.090 回答