2011-02-14 2 views
1

텍스트 상자를 페이드 인하거나 왼쪽 (또는 임의의 x/y 위치)으로 움직 이도록 간단히 애니메이트하려고합니다. 어떻게하면 될까요?WPF에서 단추/텍스트 상자 또는 모든 컨트롤을 슬라이드하는 방법은 무엇입니까?

그리드 내부에 있다면 중요할까요?

public static void FadeIn(UIElement element, int xOffset, TimeSpan duration) 
    { 
     Transform tempTrans = element.RenderTransform; 
     TranslateTransform trans = new TranslateTransform(xOffset, 0); 
     TransformGroup group = new TransformGroup(); 
     if (tempTrans != null) group.Children.Add(tempTrans); 
     group.Children.Add(trans); 

     DoubleAnimation animTranslate = new DoubleAnimation(0, (Duration)duration); 
     animTranslate.EasingFunction = new CubicEase() { EasingMode = EasingMode.EaseOut }; 
     DoubleAnimation animFadeIn = new DoubleAnimation(0, 1, (Duration)duration) { FillBehavior = FillBehavior.Stop }; 
     animTranslate.Completed += delegate 
     { 
      element.RenderTransform = tempTrans; 
     }; 

     element.RenderTransform = trans; 
     element.BeginAnimation(UIElement.OpacityProperty, animFadeIn); 
     trans.BeginAnimation(TranslateTransform.XProperty, animTranslate); 
    } 

작용 중 일부는 질문 주시기 취소되지 않은 경우 :

답변

3

여기 스케치 난 그냥 UIElement 모든 종류의 페이딩을 위해 쓴 방법입니다.

+0

안녕하세요. 덕분에 도움이됩니다. 왜 EasingFunction을 사용했는지 (그리고 왜 CubicEase를 사용했는지) 말해 줄 수 있습니까? – neebz

+0

컨트롤이 너무 갑자기 멈추지 않도록 그냥 유창하고 멋지게 보입니다. –

+0

오, 그래, 입방 용이성에 대해 잊어 버렸습니다. 왜냐하면 처음 움직임의 속도와 부식의 부드러움/지속 시간 사이에 좋은 절충안을 구성한다고 생각하기 때문입니다. 이 사이트의 그래프를 비교해보십시오 : http://msdn.microsoft.com/en-us/library/ee308751.aspx –

관련 문제