会员
周边
众包
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
老周
成于天性,行于自然。
博客园
首页
新随笔
联系
订阅
管理
随笔 - 422
文章 - 0
评论 - 1342
阅读 -
92万
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); } } } }
好文要顶
关注我
收藏该文
微信分享
东邪独孤
粉丝 -
1380
关注 -
2
推荐博客
+加关注
0
0
升级成为会员
«
上一篇:
ASP.NET大闲话:ashx文件有啥用
»
下一篇:
继续聊WPF——数字墨迹A
posted @
2011-12-25 20:05
东邪独孤
阅读(
247
) 评论(
0
)
编辑
收藏
举报
刷新页面
返回顶部
登录后才能查看或发表评论,立即
登录
或者
逛逛
博客园首页
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
编辑推荐:
·
没有源码,如何修改代码逻辑?
·
一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
·
[.NET]调用本地 Deepseek 模型
·
一个费力不讨好的项目,让我损失了近一半的绩效!
·
.NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
·
微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
·
没有源码,如何修改代码逻辑?
·
PowerShell开发游戏 · 打蜜蜂
·
在鹅厂做java开发是什么体验
·
WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
公告
满博荒唐言,一堆乱代码。都云博主痴,谁解其中味。
个人微博:
http://weibo.com/tcjiaan
昵称:
东邪独孤
园龄:
13年1个月
荣誉:
推荐博客
粉丝:
1380
关注:
2
+加关注
<
2011年12月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
我的标签
开发
(38)
UWP
(36)
Win10
(33)
App
(32)
WP
(23)
.NET
(22)
WCF
(17)
WPF
(16)
8.1
(14)
UAP
(11)
更多
随笔分类
.NET(65)
ASP.NET Core(55)
UWP(41)
WCF(15)
WPF(22)
个人文章(343)
随笔档案
2025年2月(1)
2025年1月(1)
2024年8月(1)
2024年7月(1)
2024年6月(2)
2024年5月(1)
2024年4月(4)
2024年3月(1)
2024年2月(2)
2024年1月(1)
2023年12月(2)
2023年11月(2)
2023年10月(2)
2023年9月(3)
2023年8月(2)
2023年7月(3)
2023年6月(5)
2023年5月(3)
2023年4月(1)
2023年3月(2)
2023年2月(3)
2023年1月(4)
2022年12月(3)
2022年11月(3)
2022年10月(2)
2022年9月(3)
2022年8月(2)
2022年7月(4)
2022年6月(2)
2022年5月(1)
2022年4月(1)
2022年3月(5)
2022年2月(2)
2022年1月(2)
2021年12月(3)
2021年11月(2)
2021年10月(1)
2021年9月(1)
2021年7月(1)
2021年6月(3)
2021年5月(2)
2021年4月(1)
2021年3月(2)
2021年2月(3)
2021年1月(5)
2020年11月(1)
2019年1月(2)
2018年11月(2)
2018年10月(1)
2018年9月(2)
2018年7月(1)
2018年6月(1)
2018年5月(1)
2018年4月(2)
2018年3月(2)
2018年2月(5)
2018年1月(4)
2017年12月(4)
2017年11月(8)
2017年10月(3)
2017年9月(2)
2017年8月(5)
2017年7月(5)
2017年6月(6)
2017年5月(4)
2017年4月(3)
2017年3月(2)
2017年2月(2)
2017年1月(4)
2016年12月(7)
2016年11月(3)
2016年10月(6)
2016年9月(6)
2016年8月(5)
2016年7月(5)
2016年6月(5)
2016年5月(4)
2016年4月(5)
2016年3月(7)
2016年2月(3)
2016年1月(6)
2015年12月(6)
2015年11月(6)
2015年10月(5)
2015年9月(7)
2015年8月(11)
2015年7月(7)
2015年6月(3)
2015年5月(6)
2015年4月(4)
2015年3月(3)
2015年2月(4)
2015年1月(3)
2014年12月(5)
2014年11月(6)
2014年10月(4)
2014年9月(4)
2014年8月(10)
2014年7月(4)
2014年6月(1)
2014年5月(2)
2014年4月(1)
2014年3月(3)
2014年2月(2)
2014年1月(1)
2013年11月(1)
2013年10月(5)
2013年9月(2)
2013年8月(3)
2012年11月(1)
2012年6月(3)
2012年3月(13)
2012年2月(11)
2012年1月(10)
2011年12月(12)
2011年11月(15)
2010年9月(2)
2010年8月(1)
更多
阅读排行榜
1. [WPF]带下拉列表的文本框(19329)
2. 说说 C# 9 新特性的实际运用(17996)
3. VS 2015相当不错的功能:C#交互窗口(14505)
4. 【ASP.NET Core】依赖注入高级玩法——如何注入多个服务实现类(13009)
5. 【.net 深呼吸】聊聊WCF服务返回XML或JSON格式数据(12301)
评论排行榜
1. 【闲聊】写给毕业生们的一些话(109)
2. VS 2015相当不错的功能:C#交互窗口(52)
3. 说说 C# 9 新特性的实际运用(41)
4. 【.net 深呼吸】程序集的热更新(31)
5. 【非技术】谈谈简历那些事儿(22)
推荐排行榜
1. 【闲聊】写给毕业生们的一些话(89)
2. 说说 C# 9 新特性的实际运用(82)
3. VS 2015相当不错的功能:C#交互窗口(61)
4. 【.NET】控制台应用程序的各种交互玩法(51)
5. 【.net 深呼吸】程序集的热更新(44)
最新评论
1. Re:【.NET】调用本地 Deepseek 模型
太慢了主要是。卡的很
--无觉-李敏
2. Re:【.NET】调用本地 Deepseek 模型
@yinnnleiii 根据你下载的模型啊。...
--HIT上帝视角
3. Re:【.NET】调用本地 Deepseek 模型
API 是 Ollama 提供的还是 DeepSeek 提供的呢?
--yinnnleiii
4. Re:【.NET】调用本地 Deepseek 模型
Very 优秀
--争取在天亮前起床
5. Re:【.NET】调用本地 Deepseek 模型
Very well.
--JeffWong
点击右上角即可分享
支持DeepSeek的编程助手
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战