0

Windows Phone ツールキットを codeplex からダウンロードして、電話がジェスチャ サポートを受けられるようにしました。私のアプリケーションでは、楕円があります。画面が上向きの垂直ジェスチャを受け取ったときに楕円を反時計回りに回転させ、下向きの垂直ジェスチャを受け取ったときに時計回りに回転させるメソッドを作成したいと思います。私はグーグルで多くの時間を費やしてきましたが、結果は良くありません。どうすればこの操作を達成できますか?

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 に答える