博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF动画应用-几何图形扩散动画
阅读量:4483 次
发布时间:2019-06-08

本文共 3965 字,大约阅读时间需要 13 分钟。

原文:

最终效果图:

本实例中用到了和两个类。

如果想系统学习的话可以直接点击链接看官方文档。

源码:

首先,在页面上画一个大饼,要用黄灿灿的颜色,然后给他起个名字。

后台代码一共五步:

第一步:新建一个故事板(可以设置是否循环播放,播放速度,开始时间等)

第二步:新建你想要的动作(某一个值,从多少到多少)

第三步:新建一个控件(新建一个你喜欢的东西)

第四步:把动作赋值给控件(把你写的动作赋值给你写的控件,然后你写的动作就可以改你写的控件的某个值了)

第五步:Action(动画启动,WPF按照你写的一堆动作按你设置的速度修改你写的控件的某些值)

public partial class MapPolygon : UserControl    {        ///         /// 总圆环数量        ///         public int EllipseNum { get; set; }        ///         /// 不同圆之间的时间间隔        ///         public double EllipseInterval { get; set; }        ///         /// 动画启动等待时间        ///         private double StoryBeginTime { get; set; }        ///         /// 动画持续时间        ///         public double AnimationDuration { get; set; }        ///         /// 圆的最大尺寸        ///         public double MaxSize { get; set; }        public MapPolygon()        {            InitializeComponent();            EllipseNum = 3;            MaxSize = 300;            EllipseInterval = 800;            AnimationDuration = 5;            InitAnimation1();        }        private void InitAnimation1()        {            for (int i = 1; i <= EllipseNum; i++)            {                //5-故事板-可以理解为动画集合,就是用来存放各种动作的                Storyboard story = new Storyboard()                {                    //是否循环                    RepeatBehavior = RepeatBehavior.Forever,                    //动画刷新速度                    SpeedRatio = 2                };                //4-透明度调整动作                DoubleAnimation myOpacityAnimation = new DoubleAnimation                {                    From = 1,                    To = 0,                    Duration = new Duration(TimeSpan.FromSeconds(AnimationDuration))                };                story.Children.Add(myOpacityAnimation);                //宽度调整动作                DoubleAnimation myWidthSizeChangeAnimation = new DoubleAnimation                {                    From = CenterEllipse.Width,                    To = MaxSize,                    Duration = new Duration(TimeSpan.FromSeconds(AnimationDuration))                };                story.Children.Add(myWidthSizeChangeAnimation);                //高度调整动作                DoubleAnimation myHeightSizeChangeAnimation = new DoubleAnimation                {                    From = CenterEllipse.Width,                    To = MaxSize,                    Duration = new Duration(TimeSpan.FromSeconds(AnimationDuration))                };                story.Children.Add(myHeightSizeChangeAnimation);                //3-生成一个几何形状                Ellipse tempE = new Ellipse()                {                    HorizontalAlignment = HorizontalAlignment.Center,                    VerticalAlignment = VerticalAlignment.Center,                    Width = CenterEllipse.Width,                    Height = CenterEllipse.Width,                    Stroke = CenterEllipse.Stroke,                };                //2-将之前写的动画赋值给几何图形                Storyboard.SetTarget(myOpacityAnimation, tempE);                Storyboard.SetTargetProperty(myOpacityAnimation, new PropertyPath(Ellipse.OpacityProperty));                Storyboard.SetTarget(myWidthSizeChangeAnimation, tempE);                Storyboard.SetTarget(myHeightSizeChangeAnimation, tempE);                Storyboard.SetTargetProperty(myWidthSizeChangeAnimation, new PropertyPath(Ellipse.WidthProperty));                Storyboard.SetTargetProperty(myHeightSizeChangeAnimation, new PropertyPath(Ellipse.HeightProperty));                //几何图形放到页面上                MainGrid.Children.Add(tempE);                //1-每一个故事板之间的时间间隔                StoryBeginTime += EllipseInterval;                story.BeginTime = TimeSpan.FromMilliseconds(StoryBeginTime);                //Action                story.Begin();            }        }    }

以上是该控件的全部代码,直接复制就好,不懂的看注释,然后自己改体会下,然后你就学会了

 

posted on
2019-05-01 09:31 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/10799166.html

你可能感兴趣的文章
【转】 Pro Android学习笔记(六七):HTTP服务(1):HTTP GET
查看>>
获取子iframe框架的元素
查看>>
WordCount bug修复录
查看>>
承载进程 (vshost.exe)
查看>>
[转]WPF MVVM 实战
查看>>
[转载] Python 标准库 urllib2 的使用细节
查看>>
Silverlight使用DataGrid的模板列(DataGridTemplateColumn)实现类似TreeListView控件的效果
查看>>
Java学习——Applet写字符串(调字体)
查看>>
react路由
查看>>
nyoj 220——推桌子——————【贪心】
查看>>
java 静态方法分析
查看>>
codevs——4189 字典&&HihoCoder #1014 : Trie树
查看>>
洛谷——P1602 Sramoc问题
查看>>
【MySQL笔记】字符串、时间日期转换
查看>>
jQuery实战之仿淘宝商城左侧导航效果
查看>>
AC日记——「SCOI2016」幸运数字 LiBreOJ 2013
查看>>
unmount
查看>>
数据库连接池
查看>>
windwos iis 7.5 使用html 报405错误
查看>>
范围(地址转换)
查看>>