본문 바로가기

Programing (프로그래밍)/WPF & C# (C Sharp)

[WPF & C# (C Sharp)] - 스토리보드 / 더블애니메이션( Storyboard / DoubleAnimation / Story )

728x90
반응형

 

[WPF & C# (C Sharp)] - 스토리보드 / 더블애니메이션( Storyboard / DoubleAnimation / Story )


[ 스토리보드 ( Storyboard ) ]

 - 스토리보드는 상당히 재미있는 인터렉티브한 요소들을 갖고 있다.

 - 웹서핑을 통해 찾아봐도 대부분 XAML소스로 되어 있어서 이벤트적용하기 불편한 경우가 많다.

 - 언제나 그렇듯이 코드만으로 간략하고 단순하게 사용하기 위해 남겨둔다.

 

[소스코드]

 

// ellipse 의 가로, 세로 값에 변화를 준다.

private void ani(string targetname)
        {
            int Size_from = 40;   // 처음시작할 값
            int Size_to = 0;   // 마지막으로 변경시킬 값

 

            // 가로 값 변경

            Storyboard storyboard1 = new Storyboard();   // 새로운 스토리보드를 생성한다.
            DoubleAnimation daW = new DoubleAnimation(Size_from, Size_to, new Duration(new TimeSpan(0, 0, 0, 0, 100)));   // 대부분 값을 변경하는 것이라 그런지 DoubleAnimation 을 가장 많이 쓴다.

// 듀레이션 값은 (일,시,분,초,밀리초) 순으로 적어준다.
            daW.AutoReverse = true;   // Reverse (뒤집다. 뒤바꾸다. 반복하다.) 변경된 값을 원래대로 원복한다고 보면된다.
            // daW.RepeatBehavior = RepeatBehavior.Forever;   // 무한반복된다.
            Storyboard.SetTargetName(daW, targetname);   // 타겟의 이름을 설정한다.
            Storyboard.SetTargetProperty(daW, new PropertyPath(Ellipse.WidthProperty));   // 변경할 프로퍼티값을 설정한다.
            storyboard1.Children.Add(daW);   // 스토리보드에 추가한다.

 

            // 세로 값 변경

            DoubleAnimation daH = new DoubleAnimation(Size_from, Size_to, new Duration(new TimeSpan(0, 0, 0, 0, 100)));
            daH.AutoReverse = true;
            // daW.RepeatBehavior = RepeatBehavior.Forever;
            Storyboard.SetTargetName(daH, targetname);
            Storyboard.SetTargetProperty(daH, new PropertyPath(Ellipse.HeightProperty));
            storyboard1.Children.Add(daH);

 

            // 원하는 객체 ( targetname )에 맞추어 스토리보드를 적용시킨다.

            if (targetname == "ellipse_touch") storyboard1.Begin(this.ellipse_touch);
            if (targetname == "ellipse_pen") storyboard1.Begin(this.ellipse_pen);
        }

 

 

 

// 아래와 같이 객체명을 targetname로 주고 사용하면 된다.

            ani("ellipse_touch");

 

 

 

728x90
반응형