2017-12-04 5 views
-1

에서 스토리 보드와 경로를 사용하여 애니메이션하는 방법 -이를 위해그래서,이 같은 그리드 주위에 내 직사각형 상자를 이동하려고 C#을

enter image description here

을, 나는 스토리 보드를 사용하고 있습니다.

DoubleAnimation을 사용하여 X 축과 Y 축의 상자를 내 클래스 중 하나로 이동합니다. MainWindow 클래스에서이 클래스를 호출합니다.

 //Code to move Boxes 1-4 to first grid point in their path 
     TranslateTransform moveTransform = new TranslateTransform(); 
     moveTransform.X = 0; 
     moveTransform.Y = 0; 
     x.RenderTransform = moveTransform; 


     Storyboard s = new Storyboard(); 


     DoubleAnimation Move1= new DoubleAnimation(); 

     Move1.From = 0; 
     Move1.To = xPosition; // calculate correct offset here 
     Move1.Duration = new Duration(TimeSpan.FromSeconds(hops)); 
     if (x==Box2) 
     { 
      Move1.BeginTime = TimeSpan.FromSeconds(5);//For Box 2, the first move will be across Y-Axis and hence X-Axis move will be delayed by 5 seconds. 
     } 
     else 
     { 
      Move1.BeginTime = TimeSpan.Zero; 
     } 

     Storyboard.SetTarget(Move1, x); 
     Storyboard.SetTargetProperty(Move1, new PropertyPath("(UIElement.RenderTransform).(X)")); 
     s.Children.Add(Move1); 

을 나는 방식이 알 - 그러나, 모든 상자, 모든 턴,이 같은 등 오프셋 값, 시작 시간, 지속 시간을 할당하고, 새로운 더블 애니메이션을 만들어야합니다 소스에서 목적지까지 도달 할 경로를 정의하십시오. 그러나 어떻게해야할지 모르겠습니다. 또한, 내가 여기서하고있는 것이 최적의 방법인지 확실하지 않습니다.

그래서, 내 질문은 -

이 작업을 수행 할 수있는 더 좋은 방법은 무엇입니까? 애니메이션 경로를 어떻게 정의 할 수 있습니까?

저는 C#의 초보자입니다. 바보 같다면 괜찮습니다.

감사합니다.

답변

0

경로를 사용하지 않고도 할 수있었습니다.

매 움직임마다 새로운 이중 애니메이션을 만들었습니다.

그래서 왼쪽을 위해 - 아래 - 오른쪽 이동, 다시

X 축, Y 축 및 X 축으로 3 번 애니메이션을 만들었습니다.