需要帮助来更改wpf动画的代码

时间:2012-09-10 12:36:48

标签: wpf

我是wpf的初学者。我从一个网站获得了wpf动画的代码。停靠面板加载时动画启动。我想改变动画播放时间。我想当用户点击椭圆然后动画开始,当用户点击停靠面板时,动画将停止。这是代码。

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <DockPanel>
        <Ellipse Width="200" Height="200" Name="MyEllipse">
            <Ellipse.Fill>
                <RadialGradientBrush >
                    <GradientStop Offset="0" Color="#CCCCCCCC" />
                    <GradientStop Offset="0.5" Color="white" />
                    <GradientStop Offset="1" Color="black"/>
                </RadialGradientBrush >
            </Ellipse.Fill>
        </Ellipse>
        <DockPanel.Triggers>
            <EventTrigger RoutedEvent="Page.Loaded">
                <BeginStoryboard Name="MyBeginStoryBoard">
                    <Storyboard Name="MyStoryBoard">
                        <DoubleAnimation Storyboard.TargetName="MyEllipse" Storyboard.TargetProperty="(Ellipse.Height)" 
           From="0" To="200" AutoReverse="true"
           RepeatBehavior="0:0:10" BeginTime="0:0:0" />
                        <DoubleAnimation Storyboard.TargetName="MyEllipse" Storyboard.TargetProperty="(Ellipse.Width)" 
           From="0" To="200" AutoReverse="true"
           RepeatBehavior="0:0:10" BeginTime="0:0:0" />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </DockPanel.Triggers>
    </DockPanel>
</Grid>

1 个答案:

答案 0 :(得分:0)

RoutedEvent改为PreviewMouseDown而不是Page.Loaded

编辑: 您可以通过将此触发器添加到DockPanel.Triggers

来停止动画
<EventTrigger SourceName="MyEllipse" RoutedEvent="Ellipse.PreviewMouseDown">
    <StopStoryboard BeginStoryboardName="MyBeginStoryBoard" />
</EventTrigger>

这将让您通过单击Ellipse来停止动画。 有关暂停/恢复等的示例,请参阅MSDN