使用手势以垂直拖动旋转椭圆

时间:2013-07-28 10:43:07

标签: c# windows-phone-7 xaml silverlight-toolkit

我从codeplex下载了windows phone工具包,使手机能够接收手势支持。在我的应用程序中,我有一个椭圆。我想创建一种方法,当屏幕接收向上垂直手势时,将逆时针旋转椭圆。顺时针接收向下垂直手势。我在谷歌上花了很多时间,但结果不好,我怎么能实现这个操作呢?

1 个答案:

答案 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,因为在做垂直手势时手指总是会略微向左或向右移动。)