现在的位置: 首页 > 综合 > 正文

WPF备忘录四(事件动画)

2013年06月16日 ⁄ 综合 ⁄ 共 2997字 ⁄ 字号 评论关闭
    <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);
        }
    }

抱歉!评论已关闭.