'DoubleAnimation'에 해당되는 글 1건

  1. 2010.02.12 [ WPF ] 간단한 Image Animation 2
Window/WPF2010. 2. 12. 20:34
 

이번 포스팅에서는

이미지 경로가 들어 있는 배열을 읽어 들어와

MouseEnter시 이미지 크기가 커지고 MouseLeave시 크기가 작아지는

간단한 애니메이션에 대해 알아 보겠습니다.

 

 

비하인드 코드에서 작성을 해보았습니다.

 

소스는 보시는 바와 같이

애니메이션을 만들어 이미지 객체의  EventTrigger에 연결 시키는 단순한 소스입니다.

   
    // 스토리 보드 생성

    Storyboard MenuReset = new Storyboard();

 

    DoubleAnimation withAnimation = new DoubleAnimation(100, new Duration(TimeSpan.Parse("0:0:0.15")));

    DoubleAnimation heightAnimation = new DoubleAnimation(150, new Duration(TimeSpan.Parse("0:0:0.15")));

 

    Storyboard.SetTargetProperty(withAnimation, new PropertyPath(WidthProperty));

    Storyboard.SetTargetProperty(heightAnimation, new PropertyPath(HeightProperty));

 

    MenuReset.Children.Add(withAnimation);

    MenuReset.Children.Add(heightAnimation);

 

    Storyboard ClickMenu = new Storyboard();

 

    DoubleAnimation _withAnimation = new DoubleAnimation(200, new Duration(TimeSpan.Parse("0:0:0.15")));

    DoubleAnimation _heightAnimation = new DoubleAnimation(300, new Duration(TimeSpan.Parse("0:0:0.15")));

 

    Storyboard.SetTargetProperty(_withAnimation, new PropertyPath(WidthProperty));

    Storyboard.SetTargetProperty(_heightAnimation, new PropertyPath(HeightProperty));

 

    ClickMenu.Children.Add(_withAnimation);

    ClickMenu.Children.Add(_heightAnimation);

 

    BeginStoryboard eventStoryboard1 = new BeginStoryboard();

    BeginStoryboard eventStoryboard2 = new BeginStoryboard();

 

    eventStoryboard1.Storyboard = ClickMenu;

    eventStoryboard2.Storyboard = MenuReset;

 

    // 이벤트 트리거

    EventTrigger eventTrigger = new EventTrigger(MouseEnterEvent);

    eventTrigger.Actions.Add(eventStoryboard1);

 

    EventTrigger eventTrigger2 = new EventTrigger(MouseLeaveEvent);

    eventTrigger2.Actions.Add(eventStoryboard2);

 

    foreach (string s in path)

    {

        Image image = new Image

        {

            Source = new BitmapImage(new Uri(s, UriKind.RelativeOrAbsolute)),

            Style = (Style)this.Resources["imageStyle"], // 스타일 적용

            Stretch = Stretch.Fill

        };

 

        // 이벤트 트리거 설정

        image.Triggers.Add(eventTrigger);

        image.Triggers.Add(eventTrigger2);

 

        stack.Children.Add(image);

    }

}

 

Posted by 열ㅇl