C#WPF(动画)
2021/5/10 22:32:50
本文主要是介绍C#WPF(动画),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在动画中,可以使用移动的元素、颜色变化、变换等制作平滑的变换效果。WPF使动画的制作非常简单。还可以连续改变任意依赖属性的值。不同的动画类可以根据其类型,连续改变不同属性的值。
动画的主要元素如下:
- 时间轴---定义了值随时间的变化方式。有不同类型的时间轴,可用于改变不同类型的值。所有时间轴的基类都是Timeline。为了连续改变double值,可以使用DoubleAnimation类。Int32Animation类是int值的动画类。PointAnimation类用于连续改变点,ColorAnimation类用于连续改变颜色。
- 故事板---用于合并动画。Storyboard类派生自基类TimelineGroup,TimelineGroup又派生自基类Timeline。使用DoubleAnimation类,可以连续改变double,使用Storyboard类可以合并所有应连接在一起的动画。
- 触发器---通过触发器可以启动和停止动画。前面介绍了属性触发器,当属性值变化时,属性触发器就会激活。还可以创建事件触发器,当事件发生时,事件触发器就会激活。
添加一个当Loaded完成后让椭圆的宽度自动变化的XAML代码:
<Window x:Class="WpfAppLearn1.TimeLine" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfAppLearn1" mc:Ignorable="d" Title="TimeLine" Height="450" Width="439"> <Canvas> <Ellipse x:Name="ellipse" Height="100" Width="100" Canvas.Left="45" Canvas.Top="180" Fill="Red"> <Ellipse.Triggers> <EventTrigger RoutedEvent="Ellipse.Loaded"> <EventTrigger.Actions> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetProperty="Width" RepeatBehavior="1x" Duration="0:0:6" AutoReverse="True" FillBehavior="Stop" From="100" To="300" Completed="DoubleAnimation_Completed"/> </Storyboard> </BeginStoryboard> </EventTrigger.Actions> </EventTrigger> </Ellipse.Triggers> </Ellipse> </Canvas> </Window>
Timeline属性 | 说明 |
AutoReverse | 指定连续改变的值是否在动画结束后返回初始值(默认为False) |
SpeedRatio | 可以改变动画的移动速度。在这个属性中,可以定义父子元素的相对关系。(默认值为1) |
BeginTime | 指定从触发器事件激活到动画开始移动之间的时间长度,即延时启动动画。 (默认值为0,值可以为null表示永不播放) 这和SpeedRatio属性有关:若将SpeedRatio设置为2,把BeginTime设置为6秒,动画就在3秒后开始。 |
AccelerationRatio | 定义加速度(默认值为0)(在动画中,值不一定是线性变化的。可以指定加减速度) |
DecelerationRatio | 定义减速度(默认值为0)(和加速度的总和不能超过1) |
Duration | 指定动画重复一次的时间长度 |
RepeatBehavior | 指定动画的重复次数或者重复时间(默认值为1) |
FillBehavior | 指定动画在到达其有效期末尾后的行为。(默认值为HoldEnd)
|
这里说明一下FillBehavior的用法:
可以看到XAML中有一个Completed属性,这是一个事件表示动画完成后的响应。
private void DoubleAnimation_Completed(object sender, EventArgs e) { this.ellipse.Width = 10; }
- 若是将FillBehavior设置为HoldEnd的话,响应事件后并不会将Width设置为10,因为时间线并没有停止,如果去单独加个按钮设置也一样。只有该为Stop停止时间线后设置才有效。
- Storyboard其实也继承于Timeline,也可以对其设置上表中的值。当对Storyboard设置任一个属性后,所有属于Storyboard的Timeline的FillBehavior值都以Storyboard的FillBehavior为准。
这篇关于C#WPF(动画)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#