[ay原创作品]用wpf写了个模仿36Kr网站登录背景的效果
这里我借鉴了,上周比较火的一个前端文章,人家用js去写的,地址 自己用wpf也写了一个,但是它的 粒子比较,然后连线算法真的很差,他创建了一个加入鼠标点的集合,2个集合进行比较,并且粒子会向鼠标靠近,这个存在很严重问题,如果你真心看了就知道了,粒子吸的太多了,就卡了,而我自己研究只用了一个集合,算法用的高中知识,排列组合的组合知识, 不考虑顺序的比较。当然我的效果跟他不一样,性能比他好多了。
不要说wpf,微软不维护啥的,只是你玩的时间不多,你不会玩而已。用点心,事情就成了,ay来教你
效果exe体验: 下载

1静态效果图

2动态的

整体实现思路,讲解:
先设计个类,用于粒子,在wpf中我用Ellipse去画点,用line画连线
粒子的几个属性,位置 x,y 两个方向的加速度 xa,ya,还有个距离属性max
/// <summary>
/// 粒子类
/// </summary>
public class GrainBase
{
public double? x { get; set; }
public double? y { get; set; } public double xa { get; set; } public double ya { get; set; } public double max { get; set; } }
第一步做出游离的ellipse
随机生成,x,y,xa和ya速度
//// 添加粒子
//// x,y为粒子坐标,xa, ya为粒子xy轴加速度,max为连线的最大距离
for (int i = 0; i <100; i++)
{
GrainBase gb = new GrainBase();
gb.x = rand.NextDouble() * Cav.ActualWidth;
gb.y = rand.NextDouble() * Cav.ActualHeight;
gb.xa = rand.NextDouble() * 2 - 1;
gb.ya = rand.NextDouble() * 2 - 1;
gb.max = 8000;
grains.Add(gb);
}
第二步写出算法 计算两点距离,然后比较,是否需要line
这里就需要定时器去不断的刷新了,这里1秒 60帧,一秒60次 DrawingAy方法
updateTimer = new System.Windows.Threading.DispatcherTimer();
updateTimer.Tick += new EventHandler(DrawingAY);
updateTimer.Interval = new TimeSpan(0, 0, 0, 0, 1000 / 60);
updateTimer.Start();
然后线的 宽度和颜色,透明度,根据距离比设定
所有的点都要比较,那么我用了类似 排列组合的算法中的 组合,不考虑顺序,两两比较,比如 123,三个粒子,就比较 1和2,1和3, 2和3,3次,减少次数。
由于博客园的关系,我发誓不再用博客园了,不会再分享,谢谢了,拿到代码的同志,谢谢支持你们的支持了

当然如果你聪明,凭借我上面给的思路和代码,你已经能够写出来了,如果需要源码,对不起了,博客园做的事情,我太愤怒,没了
2015年11月18日 ===== AYUI www.ayjs.net AY 杨洋原创编写,请不要转载谢谢=======
[ay原创作品]用wpf写了个模仿36Kr网站登录背景的效果的更多相关文章
- 用C3中的animation和transform写的一个模仿加载的时动画效果
用用C3中的animation和transform写的一个模仿加载的时动画效果! 不多说直接上代码; html标签部分 <div class="wrap"> <h ...
- [原创作品]手把手教你怎么写jQuery插件
这次随笔,向大家介绍如何编写jQuery插件.啰嗦一下,很希望各位IT界的‘攻城狮’们能和大家一起分享,一起成长.点击左边我头像下边的“加入qq群”,一起分享,一起交流,当然,可以一起吹水.哈,不废话 ...
- [原创作品] 对获取多层json值的封装
今天篇头不废话了,交流加群:164858883 在我们接收后端返回的json数据的时候,在数据缺失的时候,如果直接接收会导致致命错误的发生.可能有些同学会说通常都会有,不用判断直接获取也行.之前我也是 ...
- [原创作品] RequireJs入门进阶教程
最近我发现RSS采集数据是个很好玩的东西,就是可以直接把别人的数据放在自己的网站上.如果网友们在其他地方发现这篇文章,还是来博客园看吧(http://zhutty.cnblogs.com).这样代码比 ...
- [原创作品]web网页中的锚点
因为近来在从事web前端开发的工作,所以写的文章也都是关于web这一块.以后将分享算法和web高级编程的内容,很多公司的web前端不够重视,以为是很low-level,给的待遇也很一般,其实,这都是很 ...
- [原创作品] javascript 实现的web分页器原理
很久没有写博客了,因为最近忙于一些杂七杂八的事情.不过,互联网的价值在于信息共享,因为共享,所以互联网才能飞快发展.博主建了一个技术共享qq群:164858883,因为目前人数还比较少,活跃度还不是很 ...
- [原创作品] web项目构建(一)
今天开始,将推出web项目构建教程,与<javascript精髓整理篇>一并更新.敬请关注. 这篇作为这一系列开头,主要讲述web项目的构建技术大全.在众多人看来,web前端开发无非就是写 ...
- 用WPF写了一个弹幕播放器
看弹幕视频的时候,如果不发弹幕,一个本地的弹幕播放器往往能带来更好的体验.目前已经有一些实现了,最初用过一个MukioPlayer, 后来又用过一个用C++写的BiliLocal,这个程序能自动下载弹 ...
- 2句代码轻松实现WPF最大化不遮挡任务栏并且具有边框调节效果
原文:2句代码轻松实现WPF最大化不遮挡任务栏并且具有边框调节效果 相信刚入门的菜鸟跟我一样找遍了百度谷歌解决最大化遮挡任务栏的方法大多方法都是HOOK一大堆API声明 最近在敲代码的时候无意中发现有 ...
随机推荐
- Spring IoC小结
一. IoC是什么 Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象 ...
- Xml序列化UTF-8格式错误
我需要得到一个类的Xml序列化后的字符串 using (System.IO.MemoryStream mem = new System.IO.MemoryStream()) { XmlTextWrit ...
- Static Constructors
A static constructor is used to initialize any static data, or to perform a particular action that n ...
- 数据库知识整理<八>
联接: 8.1理解简单的单联接: 基本上联接的结果是每个集合的笛卡尔积.例如:两个集合{a,b,c}和{a,b}的笛卡尔积是如下的成对集合:{(a,a),(a,b),(b,a),(b,b),(c,a) ...
- C#下搭建文件格式转换服务器
文件格式转换,相信很多涉及到office文档在线观看的都会需要,因为浏览器还不能完全支持直接打开office文档,所以很多情况下我们都需要将这些文档转换成flash能够播放的格式,但是另一个问题又来了 ...
- 体验CoreCLR的stack unwinding特性在Linux/Mac上的初步实现
有了stack unwinding特性,才能在.NET程序中获取调用堆栈(call stack)信息,才能在异常时显示调用堆栈信息.这个特性之前只在Windows上有实现,Linux/Mac上的实现最 ...
- 冲刺阶段 day5
day5 项目进展 今天我们组的成员聚在一起进行了讨论,首先我们继续编写了学生管理这部分的代码,然后负责数据库的同学完成了数据库的部分,最后进行了学生管理这部分的代码复审 存在问题 因为代码不是一天之 ...
- 自定义Windows性能监视器
Windows 性能监视器是一个很好用的自带监视工具,对于一些基本简单的监视需求可以轻松满足.本文主要总结了一下如何将自己应用中的一些性能数据暴露到性能监视器上方便管理. 什么?不知道什么是Windo ...
- [stm32][ucos] 1、基于ucos操作系统的LED闪烁、串口通信简单例程
* 内容简述: 本例程操作系统采用ucos2.86a版本, 建立了5个任务 任务名 优先级 ...
- Microsoft Azure开发体验 – 网络报名系统
去年底RP好抢到了中国版Azure的使用机会,最近社团里讨论到9月份招新的问题,就用Azure Website和Azure Table Storage打造了这个报名系统. 网站放在 http://jo ...