[ay原创做品]用wpf写了个模仿36Kr网站登陆背景的效果

这里我借鉴了,上周比较火的一个前端文章,人家用js去写的,地址 本身用wpf也写了一个,可是它的  粒子比较,而后连线算法真的不好,他建立了一个加入鼠标点的集合,2个集合进行比较,而且粒子会向鼠标靠近,这个存在很严重问题,若是你真心看了就知道了,粒子吸的太多了,就卡了,而我本身研究只用了一个集合,算法用的高中知识,排列组合的组合知识,   不考虑顺序的比较。固然个人效果跟他不同,性能比他好多了。html

不要说wpf,微软不维护啥的,只是你玩的时间很少,你不会玩而已。用点心,事情就成了,ay来教你前端

效果exe体验: 下载算法

1静态效果图性能

QQ图片20151118085735.png

 

2动态的spa

QQ图片20151118085740.gif

总体实现思路,讲解:.net

先设计个类,用于粒子,在wpf中我用Ellipse去画点,用line画连线设计

粒子的几个属性,位置 x,y 两个方向的加速度 xa,ya,还有个距离属性maxorm

 /// <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  htm

随机生成,x,y,xa和ya速度blog

     //// 添加粒子
            //// 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         杨洋原创编写,请不要转载谢谢=======

相关文章
相关标签/搜索