2

我想旋转包含图像的图片框。图像只会跟随鼠标旋转,但图像的位置是固定的。关于应该如何做的任何想法?顺便说一句,使用适用于 Windows Phone 8 的 Visual Studio 2012 C# Windows phone 应用程序。我在谷歌上做了一些研究,但其他代码来自使用 WinForm 的 VS2012 但现在不同了,我无法使用他们的代码。所以我希望我能在这里找到一些答案!

目前我有这个

    private void arrowHead_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
        Duration Time_duration = new Duration(TimeSpan.FromSeconds(0.5));
        Storyboard MyStory = new Storyboard();
        MyStory.Duration = Time_duration;
        DoubleAnimation My_Double = new DoubleAnimation();
        My_Double.Duration = Time_duration;
        MyStory.Children.Add(My_Double);
        RotateTransform MyTransform = new RotateTransform();
        Storyboard.SetTarget(My_Double, MyTransform);
        Storyboard.SetTargetProperty(My_Double, new PropertyPath("Angle"));
        My_Double.To = 15;
        arrowHead.RenderTransform = MyTransform;
        arrowHead.RenderTransformOrigin = new Point(0.5, 0.5);

        //stackPanel1.Children.Add(image1);

        MyStory.Begin();
    }

这是我工作的打印屏幕。我想让红色箭头根据我的鼠标移动。谢谢!

4

1 回答 1

0

您需要的是获得鼠标从某个参考点偏移的角度。这就是我将如何做到的。我不是 C# 开发人员,所以我不能为此提供代码,但我可以解释所涉及的原则:

  • 将鼠标的位置作为一个点,然后减去作为图像中心的点。例如,如果鼠标位于(100, 80)图像的中心,(50, 50)则差异为(50, 30)
  • 执行矩形到极坐标的转换以获得角度值。这将以弧度表示;为方便起见,您可能希望将其转换为度数。将该值存储为StartAngle.
  • 每次移动鼠标时,再次执行上述两个步骤,但不是将结果角度存储为StartAngle,而是从 StartAngle 中减去它。你现在拥有的是DeltaAngle,当你开始旋转图像和鼠标当前位置之间的旋转差异。
  • DeltaAngle作为旋转度数应用于图像。
于 2013-06-27T04:28:15.273 回答