WPF星空效果

原文: WPF星空效果

效果

前阵子看到ay的蜘蛛网效果和知乎的登录页背景,觉得效果很酷.自己也想写一个.于是写着写着就变成这样了.少女梦幻的赶脚有木有.我这有着一颗少女心的抠脚大汉

实现思路

分为两个部分:

1.星星无休止的漫游.

2.星星之间的连线.

星星和连线非别放到两个容器里,以便分开操作.

星星

把星星的运动分解为X轴和Y轴两个不相干的运动,分别操作.操作就是随机生成一个速度,随机生成一个时间.运动完之后再随机生成一个速度,随机生成一个时间......无限循环.

星星的旋转也是同样的道理.

连线

首先解释下连线的规则.两个星星之间连线,每个星星都有一个连线的势力范围,就是宽度乘以连线倍率,这个连线倍率可以在窗体设置.当两个势力范围有交集的时候,就连线.

例:星1宽度5,星2宽度10,连线倍率是3,那么这两个星星的距离小于5*3+10*3=45时就连线,大于45时断开.如果连线倍率设置为4,则两个星星减的距离小于5*4+10*4=60时连线,大于60时断开.

实现与资源占有率

星星运动的实现有两种:

1.基于Grid和TranslateTransform.用DoubleAnimation动画控制星星的位移.

2.基于Canvas.通过帧动画控制Canvas的X,Y.

连线的实现也有两种:

1.简单粗暴.在每一帧都清空连线容器.然后双层循环星星,重新连接所有星星(符合连线规则的).

2.在每一帧循环连线,判断连线规则.符合就改变此连线的X1,Y1,X2,Y2.而不去重新new连线.不符合规则的就移除.然后依然是双层循环星星,看符合规则的两个星星间有没有连线,没有的就new一个.

众所周知,WPF做这种动画资源占有率还是比较高的,写了这么多实现,也是因为这个.

大体上还是基于Canvas的实现占用资源稍低.但也有个问题,如果给星星再加一个模糊效果的话,基于Canvas实现的资源占有率不会飙升,而是帧数明显降低.(也可能是我电脑环境的原因)

并不能说那种实现好与坏,可能具体运行环境不一样,参数设置不一样,每种实现都有不同的表现.

然后关于资源占有率问题,以我目前的水平,就只能到这了.博友们自己取舍吧.

 

源码下载:星空效果的两种实现.zip

2018-01-31更新:

基于Canvas的不是粗暴刷新的那个版本优化.当然没有质的改变,只是优化了一点点.主要是在星星对象上添加对连线的引用列表.循环列表,而不是去循环线的容器,逻辑简单了,少层循环.大概100个星减少5%的cup消耗.

优化后的源码下载:StarrySkyBasedOnCanvasYOUHUA.zip

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: WPF动画效果 demo是一个展示WPF动画效果的演示程序。WPF是Windows Presentation Foundation的缩写,是微软开发的一种基于向量图形的桌面应用程序开发平台。WPF具有强大的图形渲染能力和动画效果的支持,可以帮助开发人员快速开发出富有交互性的应用程序。 WPF动画效果demo展示了WPF桌面应用程序开发中最常用的动画效果:平移、旋转、缩放和淡入淡出。这些动画效果可以通过WPF内置的动画类或自定义动画类实现。在demo中,每种动画效果都配有一个按钮,点击按钮即可观看相应的动画效果。 平移动画效果是通过设置元素的位置属性来实现的。demo中演示了一个按钮在平移时如何改变位置属性,并使用WPF提供的动画类来实现流畅的运动效果。 旋转动画效果是通过设置元素的旋转角度属性来实现的。demo中演示了如何通过使用动画类来控制元素的旋转角度,并使元素在旋转时保持流畅性。 缩放动画效果是通过设置元素的缩放属性来实现的。demo中演示了如何通过使用动画类来控制元素的缩放属性,实现元素在缩放时的平滑过渡效果。 淡入淡出动画效果是通过设置元素的不透明度属性来实现的。demo中演示了如何使用动画类来控制元素的不透明度属性,实现元素在淡入淡出时的平滑过渡效果。 总体来说,WPF动画效果demo是一个非常有用的资源,可以帮助开发人员更好地理解和掌握WPF动画效果的实现方法,并为开发交互性强的桌面应用程序提供有力支持。 ### 回答2: WPF动画效果demo是一种展示WPF技术所提供的动画效果的实例应用。WPF动画效果demo的目的是为了展示WPF技术中所包含的丰富的动画效果,以让开发者在实际应用中可以使用这些动画效果来制作更加生动、优美的应用界面。 WPF动画效果demo可以运用各种形式的动画效果,如平移、旋转、缩放、透明度等,通过动画效果的实时反馈来吸引用户的注意力,为用户提供更加丰富的视觉体验。在动画效果的展示中,可根据实际需求,自由控制动画的速率、节奏、方向等参数,以达到不同的效果表现。 此外,WPF动画效果demo还可以通过应用多种动画效果的组合来实现更为复杂的视觉效果,增强应用的互动性和吸引力。 总之,WPF动画效果demo是WPF技术中的一个重要应用示例,通过动态展示各种动画效果,让开发者们可以利用WPF技术来实现更为生动、灵活的应用界面,提高应用的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值