Silverlight之我见——制作星星闪烁动画

Silverlight之我见——制作星星闪烁动画,第1张

概述  圣诞节来了,无聊,做点东西纪念一下。 原理很简单,生成1000个圆,从随机数来布置它们的位置,通过动画来处理它们的透明度,动画时长也是随机生成。   1、创建图形数组并设置背景透明,渐变笔触,大小等,而后加入到Grid元素的子元素集中; 2、创建动画时间线; 3、加载完成后播放动画; 4、每一轮动画播放完毕后,重新随机生成一下图形的Margin,动画的时间长度也是随机生成。   using S   圣诞节来了,无聊,做点东西纪念一下。 原理很简单,生成1000个圆,从随机数来布置它们的位置,通过动画来处理它们的透明度,动画时长也是随机生成。   1、创建图形数组并设置背景透明,渐变笔触,大小等,而后加入到GrID元素的子元素集中; 2、创建动画时间线; 3、加载完成后播放动画; 4、每一轮动画播放完毕后,重新随机生成一下图形的margin,动画的时间长度也是随机生成。  
using System;using System.Collections.Generic;using System.linq;using System.Net;using System.windows;using System.windows.Controls;using System.windows.documents;using System.windows.input;using System.windows.Media;using System.windows.Media.Animation;using System.windows.Shapes; namespace RandEllipseSample{    public partial class MainPage : UserControl    {        int shapesCount = 500; //图形数组的容量        //随机大小的上限        int theMaxW = 1300;        int theMaxH = 720;        Random rand = null;        Storyboard story = null;        Ellipse[] myShapes = null;        public MainPage()        {            InitializeComponent();            rand = new Random();            story = new Storyboard();            story.Completed += new EventHandler(story_Completed);            InitShapes();            InitAnimation();            //加载完成后马上播放动画            this.Loaded += new RoutedEventHandler(MainPage_Loaded);        }         voID MainPage_Loaded(object sender,RoutedEventArgs e)        {            story.Begin();        }         voID story_Completed(object sender,EventArgs e)        {            for (int x = 0; x < shapesCount; x++)            {                myShapes[x].margin = new Thickness(Convert.Todouble(rand.Next(0,theMaxW)),Convert.Todouble(rand.Next(0,theMaxH)),0);            }            InitAnimation();        }         /// <summary>        /// 初始化形状数组        /// </summary>        private voID InitShapes()        {            myShapes = new Ellipse[shapesCount];            //实例化所有成员            for (int n = 0; n < shapesCount; n++)            {                myShapes[n] = new Ellipse();                myShapes[n].Fill = new SolIDcolorBrush(colors.transparent);                myShapes[n].strokeThickness = 2d;                //笔触为线性渐变                linearGradIEntBrush gBrush = new linearGradIEntBrush();                gBrush.StartPoint = new Point(0,0);                gBrush.EndPoint = new Point(1,1);                gBrush.GradIEntStops.Add(new GradIEntStop()                {                    color = colors.Yellow,Offset = 0                });                gBrush.GradIEntStops.Add(new GradIEntStop()                {                    color = colors.Red,Offset = 0.25                });                gBrush.GradIEntStops.Add(new GradIEntStop()                {                    color = colors.White,Offset = 0.5                });                gBrush.GradIEntStops.Add(new GradIEntStop()                {                    color = colors.Blue,Offset = 0.75                });                myShapes[n].stroke = gBrush;                //位置                myShapes[n].margin = new Thickness(Convert.Todouble(rand.Next(0,0);                //大小                myShapes[n].WIDth = 10;                myShapes[n].Height = 10;                myShapes[n].HorizontalAlignment = HorizontalAlignment.left;                myShapes[n].VerticalAlignment = VerticalAlignment.top;                //加入可视化树                this.LayoutRoot.Children.Add(myShapes[n]);            }        }         /// <summary>        /// 初始化动画        /// </summary>        private voID InitAnimation()        {            story.Children.Clear();            for (int i = 0; i < shapesCount; i++)            {                int mSecond = rand.Next(0,5);                //透明度                DoubleAnimation opacityAnimate = new DoubleAnimation();                opacityAnimate.From = 1.0;                opacityAnimate.To = 0.0;                Storyboard.SetTarget(opacityAnimate,myShapes[i]);                Storyboard.SetTargetProperty(opacityAnimate,new PropertyPath("Opacity"));                opacityAnimate.Duration = new Duration(TimeSpan.FromSeconds(mSecond));                opacityAnimate.RepeatBehavior = RepeatBehavior.Forever;                 //将时间线添加到情节摘要                story.Children.Add(opacityAnimate);            }        }    }}

 



原文链接: http://www.voidcn.com/article/p-elujrdqj-bgd.html 总结

以上是内存溢出为你收集整理的Silverlight之我见——制作星星闪烁动画全部内容,希望文章能够帮你解决Silverlight之我见——制作星星闪烁动画所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1069287.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存