[ay原创作品]用wpf写了个模仿36Kr网站登录背景的效果
這里我借鑒了,上周比較火的一個(gè)前端文章,人家用js去寫的,地址?自己用wpf也寫了一個(gè),但是它的 ?粒子比較,然后連線算法真的很差,他創(chuàng)建了一個(gè)加入鼠標(biāo)點(diǎn)的集合,2個(gè)集合進(jìn)行比較,并且粒子會(huì)向鼠標(biāo)靠近,這個(gè)存在很嚴(yán)重問題,如果你真心看了就知道了,粒子吸的太多了,就卡了,而我自己研究只用了一個(gè)集合,算法用的高中知識(shí),排列組合的組合知識(shí), ? 不考慮順序的比較。當(dāng)然我的效果跟他不一樣,性能比他好多了。
不要說wpf,微軟不維護(hù)啥的,只是你玩的時(shí)間不多,你不會(huì)玩而已。用點(diǎn)心,事情就成了,ay來教你
效果exe體驗(yàn): 下載
1靜態(tài)效果圖
?
2動(dòng)態(tài)的
整體實(shí)現(xiàn)思路,講解:
先設(shè)計(jì)個(gè)類,用于粒子,在wpf中我用Ellipse去畫點(diǎn),用line畫連線
粒子的幾個(gè)屬性,位置 x,y 兩個(gè)方向的加速度 xa,ya,還有個(gè)距離屬性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
隨機(jī)生成,x,y,xa和ya速度
添加粒子x,y為粒子坐標(biāo),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);}第二步寫出算法 計(jì)算兩點(diǎn)距離,然后比較,是否需要line
這里就需要定時(shí)器去不斷的刷新了,這里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();?
然后線的 寬度和顏色,透明度,根據(jù)距離比設(shè)定
所有的點(diǎn)都要比較,那么我用了類似 排列組合的算法中的 ? 組合,不考慮順序,兩兩比較,比如 123,三個(gè)粒子,就比較 1和2,1和3, 2和3,3次,減少次數(shù)。
?由于博客園的關(guān)系,我發(fā)誓不再用博客園了,不會(huì)再分享,謝謝了,拿到代碼的同志,謝謝支持你們的支持了
當(dāng)然如果你聰明,憑借我上面給的思路和代碼,你已經(jīng)能夠?qū)懗鰜砹?#xff0c;如果需要源碼,對不起了,博客園做的事情,我太憤怒,沒了
?
2015年11月18日 ===== AYUI ? ? ? www.ayjs.net ? ? ?AY ? ? ? ? 楊洋原創(chuàng)編寫,請不要轉(zhuǎn)載謝謝=======
轉(zhuǎn)載于:https://www.cnblogs.com/AaronYang/p/4973637.html
總結(jié)
以上是生活随笔為你收集整理的[ay原创作品]用wpf写了个模仿36Kr网站登录背景的效果的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浏览器插件 火狐插件
- 下一篇: oracle去重等基础问题