WPF实现背景灯光随鼠标闪动效果
本文实例为大家分享了WPF实现背景灯光随鼠标闪动的具体代码,供大家参考,具体内容如下
实现效果如下:
思路:将容器分割成组合三角形Path,鼠标移动时更新每个三角形的填充颜色。
步骤:
1、窗体xaml
只需放置一个Canvas。
2、交互逻辑
//////MainWindow.xaml的交互逻辑 /// publicpartialclassMainWindow:Window { privatePointlastMousePosition=newPoint(0,0);//鼠标位置 privateinttriangleLength=100;//三角形边长 publicMainWindow() { InitializeComponent(); this.Loaded+=MainWindow_Loaded; CompositionTarget.Rendering+=UpdateTriangle; this.container.PreviewMouseMove+=UpdateLastMousePosition; } privatevoidMainWindow_Loaded(objectsender,RoutedEventArgse) { //将长方形容易划分成组合三角形 inthorizontalCount=(int)(this.container.ActualWidth/triangleLength); intverticalCount=(int)(this.container.ActualHeight/triangleLength); for(inti=0;ichildList=GetChildObjects (this.container); for(inti=0;i ///获得所有子控件 /// privateList GetChildObjects (System.Windows.DependencyObjectobj)whereT:System.Windows.FrameworkElement { System.Windows.DependencyObjectchild=null; List childList=newList (); for(inti=0;i (child)); } returnchildList; } /// ///截取两个指定字符中间的字符串 /// publicstaticstringMidStrEx(stringsourse,stringstartstr,stringendstr) { stringresult=string.Empty; intstartindex,endindex; try { startindex=sourse.IndexOf(startstr); if(startindex==-1) returnresult; stringtmpstr=sourse.Substring(startindex+startstr.Length); endindex=tmpstr.IndexOf(endstr); if(endindex==-1) returnresult; result=tmpstr.Remove(endindex); } catch(Exceptionex) { } returnresult; } }
说明:当组合三角形过多时,会有明显卡顿,需要优化色彩更新方法。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。