2

タッチまたはマウス WinRT xaml の丸いボタンまたはステレオ ラジオのボタンのようなイメージで回転するサンプル コードを探しています。アイデアは、コントロールに触れて左から右に無限に回転できるようにすることです。デルタ値は、別のオブジェクトの値を増減するために使用されます。回転角度は重要ではありません。コントロールを左右に回すだけの動作です。

これを達成するための良い方法についてのヒントをいただければ幸いです。

ここのコードの一部:

private RotateTransform rotateTransform;

void ManipulationStarting(object sender, ManipulationStartingRoutedEventArgs e)
{
   e.Handled = true;

   var image = sender as Image;
   var container = image.Parent as UIElement;

   var localCenter = new Point(image.ActualWidth / 2, image.ActualHeight / 2);
   var pivot = new ManipulationPivot(localCenter, 20);
   e.Pivot = pivot;

    rotateTransform.CenterX = image.ActualWidth / 2;
    rotateTransform.CenterY = image.ActualHeight / 2;

    e.Container = container;
 }


 void ImageManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
 {
      e.Handled = true;

      var image = sender as Image;

      double newAngle;
      var valueDrawline = 1;
      if (e.Delta.Rotation < 0)
      {
          valueDrawline = -1;
          newAngle = rotateTransform.Angle - (1 + e.Delta.Rotation);
      }
      else
      {
          valueDrawline = 1;
          newAngle = rotateTransform.Angle + (1 + e.Delta.Rotation);
      }

      rotateTransform.Angle = newAngle;
      image.RenderTransform = rotateTransform;
  }

「本当の」問題は、一定ではない方向から来ています。例: マウスまたは指で左から右に丸めながらコントロールを回すと、値は +1 ずつ増加するはずです。これは、現在のコードではうまく機能しません。値はほとんど +1 だけインクリメントされますが、方向を変えても -1 もインクリメントされます。より明確にするために、コントロールで水平線を描きたいと想像してみましょう。右に描くには右に、左に描くには逆にする必要があります。このコードでは、正しい方向に進んでいますが、ラインのパスに沿って多くのステップが戻っています...

事前に送信

4

0 に答える 0