zoukankan
html css js c++ java
Silverlight之我见——制作星星闪烁动画
圣诞节来了,无聊,做点东西纪念一下。
原理很简单,生成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, 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,theMaxW)), Convert.ToDouble(rand.Next(0,theMaxH)), 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); } } } }
查看全文
相关阅读:
JDK所有版本
application.yml配置log日志
eclipse配置lombok
Eclipse配置springboot
java 连接mongodb
MongoDB shell操作
mysql插入一万条数据
Web设计精髓(转)
SyntaxHighlighter -- 代码高亮插件
input之placeholder与行高的问题。
原文地址:https://www.cnblogs.com/javawebsoa/p/2457960.html
最新文章
夺命雷公狗ThinkPHP项目之----企业网站24之网站前台列表页面包屑导航的显示
夺命雷公狗ThinkPHP项目之----企业网站23之网站前台二级分类的跳转(URL跳转到列表页或产品页)
夺命雷公狗ThinkPHP项目之----企业网站22之网站前台中间层(解决代码冗余)
夺命雷公狗ThinkPHP项目之----企业网站21之网站前台二级分类显示名称(TP自定义函数展示无限极分类)
夺命雷公狗ThinkPHP项目之----企业网站20之网站前台头尾分离
夺命雷公狗ThinkPHP项目之----企业网站19之网站配置信息的修改
夺命雷公狗ThinkPHP项目之----企业网站18之网站配置列表页的完成
夺命雷公狗ThinkPHP项目之----企业网站17之网站配置页的添加
夺命雷公狗ThinkPHP项目之----企业网站16之文章批量删除的完成
夺命雷公狗ThinkPHP项目之----企业网站16之文章列表页的完善(关联查询)
热门文章
夺命雷公狗ThinkPHP项目之----企业网站15之文章删除的完成(单个)
夺命雷公狗ThinkPHP项目之----企业网站14之文章修改页的完成
夺命雷公狗ThinkPHP项目之----企业网站13之文章列表页的实现(主要是分页的实现)
夺命雷公狗ThinkPHP项目之----企业网站12之文章添加的实现
夺命雷公狗ThinkPHP项目之----企业网站11之栏目的删除完成
夺命雷公狗ThinkPHP项目之----企业网站10之栏目的编辑完善(无限极分类的完成)
夺命雷公狗ThinkPHP项目之----企业网站9之栏目的列表完善(无限极分类的完成)
mysql创建数据库表
mysql 数据类型
图片由模糊变清楚
Copyright © 2011-2022 走看看