如何根据鼠标旋转图片框
本文关键字:旋转 鼠标 何根 | 更新日期: 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
作为旋转度数应用于图像