2011-12-10 17 views
3

它看起來應該是如此簡單。我已經閱讀了數十個鏈接,並且我無法獲取任何動畫來創建位置。我相信迄今爲止我能寫的最接近的代碼是:WindowsPhone7:如何用代碼動畫UIElement的位置?

Storyboard storyboard = new Storyboard(); 
TranslateTransform trans = new TranslateTransform() { X = 1.0, Y = 1.0 }; 
     myCheckbox.RenderTransformOrigin = new Point(0.5, 0.5); 
     myCheckbox.RenderTransform = trans; 

     DoubleAnimation moveAnim = new DoubleAnimation(); 
     moveAnim.Duration = TimeSpan.FromMilliseconds(1200); 
     moveAnim.From = -1; 
     moveAnim.To = 1; 
     Storyboard.SetTarget(moveAnim, myCheckbox); 
     Storyboard.SetTargetProperty(moveAnim, new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.X)")); 
     storyboard.Completed += new System.EventHandler(storyboard_Completed); 
     storyboard.Children.Add(moveAnim); 
     storyboard.Begin(); 

沒有錯誤發生。 完成回調確實被調用。 如果我以類似的方式製作不透明的動畫效果很好。

我怎麼能簡單地用動畫代碼的UIElement的位置?

+4

將動畫翻譯從-1改爲+1將幾乎感覺不到。你嘗試過更大的數字嗎? –

回答

3

xyzzer的評論是正確的。引起混淆的原因是因爲RenderTransformOrigin的座標相對於元素使用(0,1)。實際轉換(例如TranslateTransform)使用像素作爲單位。