这里我借鉴了,上周比较火的一个前端文章,人家用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网站登录背景的效果的更多相关文章

  1. 用C3中的animation和transform写的一个模仿加载的时动画效果

    用用C3中的animation和transform写的一个模仿加载的时动画效果! 不多说直接上代码; html标签部分 <div class="wrap"> <h ...

  2. [原创作品]手把手教你怎么写jQuery插件

    这次随笔,向大家介绍如何编写jQuery插件.啰嗦一下,很希望各位IT界的‘攻城狮’们能和大家一起分享,一起成长.点击左边我头像下边的“加入qq群”,一起分享,一起交流,当然,可以一起吹水.哈,不废话 ...

  3. [原创作品] 对获取多层json值的封装

    今天篇头不废话了,交流加群:164858883 在我们接收后端返回的json数据的时候,在数据缺失的时候,如果直接接收会导致致命错误的发生.可能有些同学会说通常都会有,不用判断直接获取也行.之前我也是 ...

  4. [原创作品] RequireJs入门进阶教程

    最近我发现RSS采集数据是个很好玩的东西,就是可以直接把别人的数据放在自己的网站上.如果网友们在其他地方发现这篇文章,还是来博客园看吧(http://zhutty.cnblogs.com).这样代码比 ...

  5. [原创作品]web网页中的锚点

    因为近来在从事web前端开发的工作,所以写的文章也都是关于web这一块.以后将分享算法和web高级编程的内容,很多公司的web前端不够重视,以为是很low-level,给的待遇也很一般,其实,这都是很 ...

  6. [原创作品] javascript 实现的web分页器原理

    很久没有写博客了,因为最近忙于一些杂七杂八的事情.不过,互联网的价值在于信息共享,因为共享,所以互联网才能飞快发展.博主建了一个技术共享qq群:164858883,因为目前人数还比较少,活跃度还不是很 ...

  7. [原创作品] web项目构建(一)

    今天开始,将推出web项目构建教程,与<javascript精髓整理篇>一并更新.敬请关注. 这篇作为这一系列开头,主要讲述web项目的构建技术大全.在众多人看来,web前端开发无非就是写 ...

  8. 用WPF写了一个弹幕播放器

    看弹幕视频的时候,如果不发弹幕,一个本地的弹幕播放器往往能带来更好的体验.目前已经有一些实现了,最初用过一个MukioPlayer, 后来又用过一个用C++写的BiliLocal,这个程序能自动下载弹 ...

  9. 2句代码轻松实现WPF最大化不遮挡任务栏并且具有边框调节效果

    原文:2句代码轻松实现WPF最大化不遮挡任务栏并且具有边框调节效果 相信刚入门的菜鸟跟我一样找遍了百度谷歌解决最大化遮挡任务栏的方法大多方法都是HOOK一大堆API声明 最近在敲代码的时候无意中发现有 ...

随机推荐

  1. Mac上Homebrew的使用 (Homebrew 使 OS X 更完整)

    0 Homebrew是啥? “Homebrew installs the stuff you need that Apple didn’t.——Homebrew 使 OS X 更完整”. Homebr ...

  2. display:line-block和blaock的区别

    1.使用inline-block 会产生了元素间的空隙 2.line-block主要的用处是用来处理行内非替换元素的高宽问题的!行内非替换元素,比如span.a等标签,正常情况下士不能设置宽高的,加上 ...

  3. Reapter控件的特殊使用:使用EVAL调取asp:Repeater里面绑定的值来进行判断 根据从数据库获取的数据进行判断 ,进而显示成想要的内容

    1.这个判断的过程你可以写在后台,如先在后台写一个public类型的方法:public bool CheckAduit(string code){ //根据你传入的code来判断,并返回true或者f ...

  4. MySQL使用小记

    时间格式化: select date_format('2008-08-08 22:23:01', '%Y%m%d%H%i%s'); 去重复: use iksdb3; select distinct ` ...

  5. BST、B树、B+树、B*树

    一. BST BST即二叉搜索树Binary Search Tree(又叫二叉排序树Binary Sort Tree).它有以下特点: 所有非叶子结点至多拥有两个儿子(Left和Right): 所有结 ...

  6. 如何使用grunt工具

    本文来源于同事的笔记,也是在网上查找的资料,记录分析的特别详细,对初学者来说简直不能再通俗易懂了,感谢原作者! 1.前言 选择Grunt原因 管理我们的文件依赖 随心所欲的批处理任务 整合常用的前端工 ...

  7. hdu 5748(求解最长上升子序列的两种O(nlogn)姿势)

    Bellovin Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepte ...

  8. 对象池与.net—从一个内存池实现说起

    本来想写篇关于System.Collections.Immutable中提供的ImmutableList里一些实现细节来着,结果一时想不起来源码在哪里--为什么会变成这样呢--第一次有了想写分析的源码 ...

  9. php redis 代码实例

    <?phpheader("Content-type:text/html;charset=utf8");$redis = new redis();$redis ->con ...

  10. 为什么在Mac中无法用k web运行ASP.NET 5程序

    k web对应的命令如下: "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebLi ...