2013-07-02 99 views
2

有人可以請我演示如何從當前位置爲窗口添加動畫。我正在尋找一個搖動效果,只需搖動左右窗口5到6次。動搖一個WPF窗口左右搖動效果?

我明白我需要使用Animation.By。這是我已經開始的事情,但我沒有走得更遠。

但是不行。

<Storyboard x:Key="sbShake1" FillBehavior="Stop"> 
    <DoubleAnimation Storyboard.TargetName="W1" Storyboard.TargetProperty ="(Window.Left)" 
        By="10" Duration="0:0:1"> 
    </DoubleAnimation > 
</Storyboard > 

我設法得到正確的晃動的影響,但我不能從窗戶做的當前位置。

<Storyboard x:Key="sbShake" RepeatBehavior ="00:00:01" SpeedRatio ="25" > 
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty ="Left"> 
     <SplineDoubleKeyFrame KeyTime ="00:00:00.1000000" Value ="-10"/> 
     <SplineDoubleKeyFrame KeyTime ="00:00:00.3000000" Value ="0"/> 
     <SplineDoubleKeyFrame KeyTime ="00:00:00.5000000" Value ="10"/> 
     <SplineDoubleKeyFrame KeyTime ="00:00:00.7000000" Value ="0"/> 
    </DoubleAnimationUsingKeyFrames > 
</Storyboard > 

所有幫助將不勝感激。

回答

2

你的窗口的左屬性設置爲500,並添加以下代碼:

<Window.Triggers> 
    <EventTrigger RoutedEvent="Window.MouseDown" > 
     <EventTrigger.Actions> 
      <BeginStoryboard> 
       <Storyboard TargetProperty="Left"> 
        <DoubleAnimation From="500" To="515" Duration="0:0:0.05" 
            AutoReverse="True" RepeatBehavior="3x" 
            FillBehavior="Stop"/> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger.Actions> 
    </EventTrigger> 
</Window.Triggers> 

你應該設置的Window財產Left手動的時候你不提From="x",否則它設置爲Auto,當你試圖搖動你的窗口時,Left的值是NaN,並且會引發異常。

+0

它已經很長一段時間了,但我剛剛回來了。謝謝阿里。 – darbid

+0

我的快樂darbid。 –

1

你可以使用a BounceEase使窗口抖動:

<Storyboard x:Name="myStoryboard"> 
    <DoubleAnimation By="10" Duration="00:00:3" 
        AutoReverse="True" RepeatBehavior="1" 
        Storyboard.TargetName="W1" 
        Storyboard.TargetProperty="Left"> 
     <DoubleAnimation.EasingFunction> 
      <BounceEase Bounces="2" EasingMode="EaseOut" 
         Bounciness="2" /> 
     </DoubleAnimation.EasingFunction> 
    </DoubleAnimation> 
</Storyboard> 
+0

對我來說,這隻適用於'From'值。否則Window將繼續向右移動。 – LPL

+0

對兩個人都很抱歉。我的第一個代碼片段確實不起作用。它確實繼續從屏幕上離開。我編輯了我的原始帖子。我不確定BounceEase是我正在尋找的那種動搖。這種搖動表明一個錯誤,所以更喜歡只是一個左右等大小,速度等運動。 – darbid

+0

只要確保您將autoreverse屬性設置爲true並重復屬性正確 –