有人可以告诉我如何从当前位置为窗口设置动画。我正在寻找一种震动效果,只需左右摇动窗口就可以说5到6次。
我知道我需要使用Animation.By。这是我已经开始但我没有走得太远。
这不起作用。
<Storyboard x:Key="sbShake1" FillBehavior="Stop">
<DoubleAnimation Storyboard.TargetName="W1" Storyboard.TargetProperty ="(Window.Left)"
By="10" Duration="0:0:1">
</DoubleAnimation >
</Storyboard >
我已经设法获得了正确的摇晃效果,但我无法从Windows当前位置执行此操作。
<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 >
所有帮助将不胜感激。
答案 0 :(得分:4)
将窗口的Left属性设置为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>
如果您没有提及Left
,则应手动设置Window
的属性From="x"
,否则设置为自动,当您尝试摇动窗口时左侧的值是NaN,会抛出异常。
答案 1 :(得分: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>