如何根据鼠标旋转图片框

本文关键字:旋转 鼠标 何根 | 更新日期: 2023-09-27 18:19:49

我想旋转包含图像的picturebox。图像只会跟随鼠标旋转,但图像的位置是固定的。你知道应该怎么做吗?顺便说一下,使用Visual Studio 2012 C#Windows phone应用程序for 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();
    }

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

如何根据鼠标旋转图片框

您需要的是获得鼠标从某个参考点偏移的角度。我是这样做的。我不是C#开发人员,所以我不能给出代码,但我可以解释其中的原理:

  • 将鼠标的位置作为一个点,减去图像中心的点。例如,如果鼠标位于(100, 80),而图像的中心位于(50, 50),则差值为(50, 30)
  • 执行矩形到极轴的转换以获得角度值。这将以弧度为单位;为了方便起见,您可能需要将其转换为学位。将该值存储为StartAngle
  • 每次移动鼠标时,请再次执行上面的两个步骤,但不要将结果角度存储为StartAngle,而是将其从StartAngle中减去。现在的是DeltaAngle,即开始旋转图像时与鼠标当前位置之间的旋转差
  • DeltaAngle作为旋转度数应用于图像