如何根据我的鼠标旋转图片框

时间:2013-06-26 01:49:27

标签: c# xaml visual-studio-2012 windows-phone-8 windows-phone

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

目前我有这个

    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();
    }

这是我工作的print screen。我想根据我的鼠标让红色箭头移动。 谢谢!

1 个答案:

答案 0 :(得分:0)

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

  • 将鼠标的位置作为一个点,然后减去图像中心的点。例如,如果鼠标位于(100, 80)且图像中心位于(50, 50),那么差异为(50, 30)
  • 执行rectangular to polar conversion以获取角度值。这将是弧度;为方便起见,您可能希望将其转换为度数。将该值存储为StartAngle
  • 每次移动鼠标时,再次执行上述两个步骤,但不是将结果角度存储为StartAngle,而是从StartAngle中减去它。你现在拥有的是DeltaAngle,即你开始旋转图像和鼠标当前位置之间的旋转差异。
  • DeltaAngle应用于图像作为旋转度。