0

我已经从 codeplex 下载了 windows phone 工具包,它使手机能够接收手势支持。在我的应用程序中,我有一个椭圆。我想创建一个方法,当屏幕接收到向上垂直手势时逆时针旋转椭圆,当它接收到向下垂直手势时顺时针旋转椭圆。我在google上花了很多时间但效果不佳,我该如何实现这个操作?

4

1 回答 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 回答