WPF备忘录四(事件动画)

来源:互联网 发布:数据库备份系统 编辑:程序博客网 时间:2024/05/17 06:11
    <Grid>        <Rectangle Height="65" HorizontalAlignment="Left"  Fill="Blue" Margin="133,67,0,0" Name="rect" Stroke="Black" VerticalAlignment="Top" Width="73">            <Rectangle.RenderTransform>                <RotateTransform Angle="0" CenterX="20" CenterY="20" x:Name="rt"></RotateTransform>            </Rectangle.RenderTransform>        </Rectangle>        <Button Content="开始" Height="23" HorizontalAlignment="Left" Margin="32,189,0,0" Name="btnStart" VerticalAlignment="Top" Width="75" />        <Button Content="暂停" Height="23" HorizontalAlignment="Left" Margin="113,189,0,0" Name="btnPause" VerticalAlignment="Top" Width="75" />        <Button Content="继续" Height="23" HorizontalAlignment="Left" Margin="194,189,0,0" Name="btnResume" VerticalAlignment="Top" Width="75" />        <Button Content="停止" Height="23" HorizontalAlignment="Right" Margin="0,189,153,0" Name="btnStop" VerticalAlignment="Top" Width="75" />        <Grid.Triggers>            <!--开始-->            <EventTrigger SourceName="btnStart" RoutedEvent="Button.Click">                <EventTrigger.Actions>                    <BeginStoryboard x:Name="bs">                        <Storyboard RepeatBehavior="Forever">                            <DoubleAnimation Storyboard.TargetName="rt" Storyboard.TargetProperty="Angle" From="0" To="360" Duration="00:00:10"></DoubleAnimation>                        </Storyboard>                    </BeginStoryboard>                </EventTrigger.Actions>            </EventTrigger>            <!--暂停-->            <EventTrigger SourceName="btnPause" RoutedEvent="Button.Click">                <EventTrigger.Actions>                    <PauseStoryboard BeginStoryboardName="bs"></PauseStoryboard>                </EventTrigger.Actions>            </EventTrigger>            <!--继续-->            <EventTrigger SourceName="btnResume" RoutedEvent="Button.Click">                <ResumeStoryboard BeginStoryboardName="bs"></ResumeStoryboard>            </EventTrigger>            <!--停止-->            <EventTrigger SourceName="btnStop" RoutedEvent="Button.Click">                <StopStoryboard BeginStoryboardName="bs"></StopStoryboard>            </EventTrigger>        </Grid.Triggers>    </Grid>

利用代码方式处理动画事件:

<Grid>        <Rectangle Height="65" HorizontalAlignment="Left"  Fill="Blue" Margin="133,67,0,0" Name="rect" Stroke="Black" VerticalAlignment="Top" Width="73">            <Rectangle.RenderTransform>                <RotateTransform Angle="0" CenterX="20" CenterY="20" x:Name="rt"></RotateTransform>            </Rectangle.RenderTransform>        </Rectangle>        <Button Content="开始" Height="23" HorizontalAlignment="Left" Margin="32,189,0,0" Name="btnStart" VerticalAlignment="Top" Width="75" Click="btnStart_Click" />        <Button Content="暂停" Height="23" HorizontalAlignment="Left" Margin="113,189,0,0" Name="btnPause" VerticalAlignment="Top" Width="75" />        <Button Content="继续" Height="23" HorizontalAlignment="Left" Margin="194,189,0,0" Name="btnResume" VerticalAlignment="Top" Width="75" />        <Button Content="停止" Height="23" HorizontalAlignment="Right" Margin="0,189,153,0" Name="btnStop" VerticalAlignment="Top" Width="75" />    </Grid>

    public partial class MainWindow : Window    {        public MainWindow()        {            InitializeComponent();        }        private void btnStart_Click(object sender, RoutedEventArgs e)        {            DoubleAnimation da = new DoubleAnimation(0,100,new Duration(TimeSpan.FromSeconds(5)));            da.RepeatBehavior = RepeatBehavior.Forever; //永久循环            da.AutoReverse = true; //来回往复            //第一种方式            //rect.BeginAnimation(Rectangle.WidthProperty, da);            //第二种方式,可以添加多个动画            Storyboard sb = new Storyboard();            Storyboard.SetTargetProperty(da,new PropertyPath(Rectangle.WidthProperty));            sb.Children.Add(da);            sb.Begin(rect);        }    }