2013-06-26 32 views
2

我想旋轉包含圖片的圖片盒。圖像將隨着鼠標旋轉,但圖像的位置是固定的。任何想法應該如何完成?順便說一句,使用Visual Studio 2012 Windows Phone 8的C#Windows手機應用程序。我已經做了一些關於谷歌的研究,但其他代碼是使用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(); 
    } 

這是我工作的一個print screen。我想讓紅色箭頭根據我的鼠標移動。 謝謝!

回答

0

你需要的是獲得鼠標從某個參考點偏移的角度。這是我將如何去做的。我不是C#開發人員,所以我不能給這個代碼,但我可以解釋涉及的原則:

  • 獲取鼠標的位置作爲一個點,並減去這個點的中心點你的形象。例如,如果鼠標位於(100, 80),圖像中心位於(50, 50),則差異爲(50, 30)
  • 執行rectangular to polar conversion以獲得角度值。這將以弧度表示;爲方便起見,您可能需要將其轉換爲度數。將該值存儲爲StartAngle
  • 每次移動鼠標時,再次執行上述兩個步驟,但不是將結果角度存儲爲StartAngle,而是從StartAngle中減去它。你現在擁有的是DeltaAngle,你開始旋轉圖像和鼠標當前位置之間的旋轉差異。
  • DeltaAngle作爲旋轉度應用於圖像。
+0

但它不是非常足智多謀,因爲我的鼠標可能處於不同的位置,我無法對位圖的所有點應用相同的方法? –

+0

@ Gwenda.T:這是假設你想圍繞位圖的中心旋轉。如果沒有,您可以調整算法以補償它。 –