WPF 基本动画

目录

一、基本动画

1. 基本分类

2. 属性介绍

3. 事件介绍

4. 解除动画结束后对属性的控制

3. 代码示例

二、动画的使用

1. 动画的触发

2. 动画的操作

三、代码示例

四、 结果展示

五、源码下载


 

一、基本动画

1. 基本分类

1. DoubleAnimation:操作的属性值为Double类型

2. ColorAnimation: 操作的属性值为Color

3. PointAnimation: 操作的属性值为Point

2. 属性介绍

1. Storyboard.TargetName 指定动画对象

2. Storyboard.TargetProperty 指定动画属性

3. From 属性开始变化的Value

4. To 属性最终变化的Value

5. By 偏移量

6. Duration 动画的持续时间

7. BeginTime 点击开始之后,动画开始前的延时,相当于片头。

8. AutoReverse 进行相反Value的动画

9. RepeatBehavior 设置是否一直重复

10. FillBehavior 告诉动画在其活动期结束时停止影响其目标属性

3. 事件介绍

Completed :动画结束时候需要执行的操作

4. 解除动画结束后对属性的控制

动画对属性有绝对的控制,在动画结束之后,想要更改属性值,需要结合FillBehavior=stop 来解除对属性值的固定。

3. 代码示例
<Page.Resources>
        <Storyboard x:Key="rectStoryboard">
            <DoubleAnimation 
                Storyboard.TargetName="retangle"
                Storyboard.TargetProperty="Opacity" 
                Duration="0:0:4" 
                From="1"
                By="0.2"
                To="0.1"
                BeginTime="0:0:3"
                FillBehavior ="Stop"
                Completed="DoubleAnimation_Completed"                             
                />
            <!--AutoReverse="True"-->
            <!--RepeatBehavior="Forever"-->
        </Storyboard>
</Page.Resources>

<Page.Resources>
        <Storyboard x:Key="colorStoryboard">
            <ColorAnimation Storyboard.TargetName="color" Storyboard.TargetProperty="Color"
                            Duration="0:0:2"
                            From="Black"
                            To="Red"
                            />
        </Storyboard>
</Page.Resources>
 <Page.Resources>
        <Storyboard x:Key="positionStoryboard">
            <PointAnimation Storyboard.TargetName="ellipse" Storyboard.TargetProperty="Center"
                            Duration="0:0:2"
                            From="50,50"
                            To="400,100"                           
                            />
        </Storyboard>
</Page.Resources>

二、动画的使用

1. 动画的触发

动画的触发一般放在事件处理器当中。

使用Button时间开始执行动画

2. 动画的操作

BeginStoryboard 开始

StopStoryboard 停止

PauseStoryboard 暂停

ResumeStoryboard 恢复

SetStoryboardSpeedRatio 快进/慢

RemoveStoryboard 删除

SeekStoryboard 跳过片头

SkipStoryboardToFill 跳过片尾

三、代码示例

<Page x:Class="Animation.DoubleAnimationPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:local="clr-namespace:Animation"
      mc:Ignorable="d" 
      d:DesignHeight="450" d:DesignWidth="800"
      Title="DoubleAnimationPage">

    <Page.Resources>
        <Storyboard x:Key="rectStoryboard">
            <DoubleAnimation 
                Storyboard.TargetName="retangle"
                Storyboard.TargetProperty="Opacity" 
                Duration="0:0:4" 
                From="1"
                By="0.2"
                To="0.1"
                BeginTime="0:0:3"  
                FillBehavior ="Stop"
                Completed="DoubleAnimation_Completed"
                />
         
        </Storyboard>

    </Page.Resources>
    <Grid Background="White">
        <Canvas>
            <StackPanel Orientation="Horizontal" Canvas.Left="250" Canvas.Top="191">
                <Button Content="开始" x:Name="startbtn"/>
                <Button Content="停止" x:Name="endbtn"/>
                <Button Content="暂停" x:Name="stopbtn"/>
                <Button Content="恢复" x:Name="resumebtn"/>
                <Button Content="快进" x:Name="acceleratetbtn"/>
                <Button Content="快慢" x:Name="deceleratebtn"/>
                <Button Content="删除" x:Name="deletebtn"/>
                <Button Content="跳过片头" x:Name="seekbtn"/>
                <Button Content="跳到末尾" x:Name="filltoendbtn"/>

            </StackPanel>
            <Rectangle Height="100" Width="300" Fill="Green" Canvas.Left="250" Canvas.Top="64" x:Name="retangle">

            </Rectangle>

            <Canvas.Triggers>
                <EventTrigger RoutedEvent="Button.Click" SourceName="startbtn">
                    <BeginStoryboard Storyboard="{StaticResource rectStoryboard}" x:Name="myBeginStoryboard" />
                </EventTrigger>
                <EventTrigger RoutedEvent="Button.Click" SourceName="endbtn">
                    <StopStoryboard BeginStoryboardName="myBeginStoryboard"/>
                </EventTrigger>
                <EventTrigger RoutedEvent="Button.Click" SourceName="stopbtn">
                    <PauseStoryboard BeginStoryboardName="myBeginStoryboard"/>
                </EventTrigger>
                <EventTrigger RoutedEvent="Button.Click" SourceName="resumebtn">
                    <ResumeStoryboard BeginStoryboardName="myBeginStoryboard"/>
                </EventTrigger>
                <EventTrigger RoutedEvent="Button.Click" SourceName="acceleratetbtn">
                    <SetStoryboardSpeedRatio SpeedRatio="2" BeginStoryboardName="myBeginStoryboard"/>
                </EventTrigger>
                <EventTrigger RoutedEvent="Button.Click" SourceName="deceleratebtn">
                    <SetStoryboardSpeedRatio SpeedRatio="0.5" BeginStoryboardName="myBeginStoryboard"/>
                </EventTrigger>
                <EventTrigger RoutedEvent="Button.Click" SourceName="deletebtn">
                    <RemoveStoryboard BeginStoryboardName="myBeginStoryboard"/>
                </EventTrigger>
                <EventTrigger RoutedEvent="Button.Click" SourceName="seekbtn">
                    <SeekStoryboard Origin="BeginTime" Offset="0:0:3" BeginStoryboardName="myBeginStoryboard"/>
                </EventTrigger>
                <EventTrigger RoutedEvent="Button.Click" SourceName="filltoendbtn">
                    <SkipStoryboardToFill BeginStoryboardName="myBeginStoryboard"/>
                </EventTrigger>
            </Canvas.Triggers>

        </Canvas>

    </Grid>
</Page>

namespace Animation
{
    /// <summary>
    /// Interaction logic for DoubleAnimationPage.xaml
    /// </summary>
    public partial class DoubleAnimationPage : Page
    {
        public DoubleAnimationPage()
        {
            InitializeComponent();
        }

        private void DoubleAnimation_Completed(object sender, EventArgs e)
        {
            this.retangle.Opacity = 1;
        }
    }
}

四、 结果展示

1. DoubleAnimation

DoubleAnimation

2. ColorAnimation

ColorAnimation

3. PointAnimation

PointAnimation

五、源码下载

https://download.csdn.net/download/m0_48915942/88629529?spm=1001.2014.3001.5503

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: WPF(Windows Presentation Foundation)是微软公司推出的一种开发Windows应用程序的技术框架,它通过使用XAML(eXtensible Application Markup Language)来描述应用程序的界面和UI元素,并结合C#或其他编程语言来实现应用程序的逻辑功能。WPF提供了丰富的UI控件库、布局管理器、数据绑定、样式和模板等功能,使开发者能够快速创建功能强大且美观的应用程序。 WPF动画功能是其重要的特性之一,通过使用WPF动画功能,开发者可以在应用程序中创建各种各样的动画效果,为应用程序的用户界面增添生动和交互性。WPF动画可以应用于UI元素的位置、大小、颜色等属性,以及控件的形状、透明度、旋转、缩放等变化。开发者可以使用XAML或C#代码来定义动画效果,并通过设定起始值和结束值之间的过渡方式来控制动画的播放速度和效果。 CSDN(China Software Development Network)是中国最大的IT社区和专业的技术开发者网络平台,提供全面的技术文档、下载资源、技术问答、博客分享等服务,是广大开发者学习、交流和分享经验的重要平台之一。在CSDN上,开发者可以找到关于WPF动画的详细教程、例子代码和实践经验分享,了解如何使用WPF动画功能创建各种各样的动画效果。 通过在CSDN上学习和掌握WPF动画的相关知识,开发者可以深入了解WPF动画的原理和使用方法,并能够灵活运用WPF动画功能来打造出独特、富有创意的应用程序界面。通过参与CSDN的讨论和交流,开发者还可以与其他开发者分享自己的学习心得和经验,并从他人的经验中学到更多有关WPF动画的技巧和最佳实践。总之,WPF动画和CSDN为开发者提供了一个良好的学习和交流平台,使开发者能够更好地掌握和应用WPF动画功能。 ### 回答2: WPF是一种用于构建 Windows 客户端应用程序的技术,它提供了丰富的功能和灵活的界面设计选项。而动画WPF中非常重要的一部分,可以为界面元素添加各种动态效果和交互效果。 在CSDN上,我们可以找到大量关于WPF动画的学习资源和教程,有助于我们深入了解和掌握WPF动画的原理和使用方法。CSDN的WPF动画专栏中,不仅有详细的动画基础知识介绍,还有具体的代码示例和案例分析,可以帮助我们快速上手和实践。 WPF中的动画可以通过多种方式实现,包括属性动画、路径动画、触发器动画等。属性动画可以实现元素的平移、缩放、旋转等效果,路径动画可以让元素沿着预定义路径移动,而触发器动画可以根据特定的条件触发元素的动画效果。通过CSDN上的相关教程,我们可以学习到这些动画的具体用法和实现方法。 此外,CSDN上还有许多WPF动画相关的博客和经验分享,可以帮助我们解决在实际开发中遇到的问题,并提供一些建议和技巧。 总的来说,WPF动画是一项非常实用和有趣的技术,它可以为我们的应用程序增加各种视觉效果,提高用户体验。而CSDN作为一个IT技术社区,提供了丰富的WPF动画学习资源,可以帮助我们更好地掌握和应用这项技术。无论是初学者还是有经验的开发者,都可以通过CSDN上的教程和资源,更好地使用WPF动画来设计出更加吸引人的用户界面。 ### 回答3: WPF(Windows Presentation Foundation)是一种用于创建高性能、现代化用户界面的框架。它提供了强大的图形渲染功能和灵活的布局系统,使开发人员能够创建出各种功能丰富且美观的应用程序。 在WPF中,动画是一种非常重要的特性。它可以让界面元素以流畅而连续的方式移动、旋转、缩放和淡入淡出等效果。WPF动画机制非常灵活,可以通过代码或XAML来定义动画效果。而CSDN是一个知名的IT技术社区,WPF动画方面的教程和文章在CSDN上非常丰富。 CSDN上的WPF动画教程可以帮助开发人员掌握WPF动画的使用方法和技巧。其中会介绍WPF动画基本概念、属性和类型,以及如何使用关键帧动画、路径动画、缩放动画等。教程中还会涉及到WPF动画的常见应用场景,如创建动态图标、实现按钮交互效果等。 在CSDN上,还可以找到一些WPF动画的示例代码和案例讲解。这些实例可以帮助开发人员更好地理解WPF动画的实现原理和技术细节。通过学习这些示例,开发人员可以逐步提升自己的WPF动画开发能力,并将其应用于自己的实际项目中。 总之,WPF动画在用户界面的设计和交互中起到很重要的作用,开发人员可以通过CSDN上的资源来学习和掌握WPF动画的使用。无论是初学者还是有一定WPF开发经验的开发人员,CSDN上的WPF动画教程和文章都会给予帮助和指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值