2011-12-10 2 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)은 단위로 픽셀을 사용합니다.

관련 문제