첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

▶ XAML

<StackPanel Orientation="Horizontal">
    <StackPanel.Resources>
        <Storyboard x:Name="storyboard1"
            Completed="storyboard_Completed">
            <DoubleAnimation x:Name="doubleAnimation1"
                Storyboard.TargetProperty="Opacity"
                AutoReverse="True"
                Duration="0:0:2"
                From="1.0"
                To="0.0" />
        </Storyboard>
        <Storyboard x:Name="storyboard2"
            Completed="storyboard_Completed">
            <DoubleAnimation x:Name="doubleAnimation2"
                Storyboard.TargetProperty="Opacity"
                AutoReverse="True"
                Duration="0:0:2"
                From="1.0"
                To="0.0" />
        </Storyboard>
        <Storyboard x:Name="storyboard3"
            Completed="storyboard_Completed">
            <DoubleAnimation x:Name="doubleAnimation3"
                Storyboard.TargetProperty="Opacity"
                AutoReverse="True"
                Duration="0:0:2"
                From="1.0"
                To="0.0" />
        </Storyboard>
    </StackPanel.Resources>
    <Rectangle x:Name="rectangle1"
        Margin="3"
        Width="100"
        Height="100"
        Fill="Blue"
        MouseLeftButtonDown="rectangle_MouseLeftButtonDown" />
    <Rectangle x:Name="rectangle2"
        Margin="3"
        Width="100"
        Height="100"
        Fill="Blue"
        MouseLeftButtonDown="rectangle_MouseLeftButtonDown" />
    <Rectangle x:Name="rectangle3"
        Margin="3"
        Width="100"
        Height="100"
        Fill="Blue"
        MouseLeftButtonDown="rectangle_MouseLeftButtonDown" />
    <Rectangle x:Name="rectangle4"
        Margin="3"
        Width="100"
        Height="100"
        Fill="Blue"
        MouseLeftButtonDown="rectangle_MouseLeftButtonDown" />
</StackPanel>

 

728x90

 

▶ C#

using System;
using System.Windows.Input;
using System.Windows.Shapes;
using System.Windows.Media.Animation;

/// <summary>
/// 스토리보드 1 활성 여부
/// </summary>
bool isStoryboard1Active = false;

/// <summary>
/// 스토리보드 2 활성 여부
/// </summary>
bool isStoryboard2Active = false;

/// <summary>
/// 스토리보드 3 활성 여부
/// </summary>
bool isStoryboard3Active = false;

#region 스토리보드 완료시 처리하기 - storyboard_Completed(sender, e)

/// <summary>
/// 스토리보드 완료시 처리하기
/// </summary>
/// <param name="pSender">이벤트 발생자</param>
/// <param name="pEventArgs">이벤트 인자</param>
private void storyboard_Completed(object sender, EventArgs e)
{
    Storyboard storyboard = sender as Storyboard;

    switch(storyboard.GetValue(NameProperty).ToString())
    {
        case "storyboard1" : this.isStoryboard1Active = false; break;
        case "storyboard2" : this.isStoryboard2Active = false; break;
        case "storyboard3" : this.isStoryboard3Active = false; break;
    }
}

#endregion

#region 사각형 마우스 왼쪽 버튼 DOWN시 처리하기 - rectangle_MouseLeftButtonDown(sender, e)

/// <summary>
/// 사각형 마우스 왼쪽 버튼 DOWN시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void rectangle_MouseLeftButtonDown(object sender, MouseEventArgs e)
{
    Rectangle rectangle = pSender as Rectangle;

    if(!this.isStoryboard1Active)
    {
        this.storyboard1.Stop();

        this.doubleAnimation1.SetValue(Storyboard.TargetNameProperty, rectangle.Name);

        this.storyboard1.Begin();

        this.isStoryboard1Active = true;
    }
    else if(!this.isStoryboard2Active)
    {
        this.storyboard2.Stop();

        this.doubleAnimation2.SetValue(Storyboard.TargetNameProperty, rectangle.Name);

        this.storyboard2.Begin();

        this.isStoryboard2Active = true;
    }
    else if(!this.isStoryboard3Active)
    {
        this.storyboard3.Stop();

        this.doubleAnimation3.SetValue(Storyboard.TargetNameProperty, rectangle.Name);

        this.storyboard3.Begin();

        this.isStoryboard3Active = true;
    }
}

#endregion

 

728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요