WPF桌面下雪效果

寄存在canvas面板,目前缺点就是开始的时候效果有点别扭。

直接贴代码:

 1         void StartSnowing(Canvas panel)
 2         {
 3             Random random = new Random();
 4             Task.Factory.StartNew(new Action(() =>
 5             {
 6                 for (int j = 0; j < 10; j++)
 7                 {
 8                     Thread.Sleep(j * 100);
 9                     Dispatcher.Invoke(new Action(() =>
10                     {
11                         int snowCount = random.Next(0, 20);
12                         for (int i = 0; i < snowCount; i++)
13                         {
14                             int width = random.Next(10, 20);
15                             PackIconFontAwesome pack = new PackIconFontAwesome()
16                             {
17                                 Kind = PackIconFontAwesomeKind.SnowflakeRegular,
18                                 Width = width,
19                                 Height = width,
20                                 Foreground = Brushes.White,
21                                 BorderThickness = new Thickness(0),
22                                 RenderTransform = new RotateTransform(),
23                             };
24                             int left = random.Next(0, (int)panel.ActualWidth);
25                             Canvas.SetLeft(pack, left);
26                             panel.Children.Add(pack);
27                             int seconds = random.Next(10, 20);
28                             DoubleAnimationUsingPath doubleAnimation = new DoubleAnimationUsingPath()
29                             {
30                                 Duration = new Duration(new TimeSpan(0, 0, seconds)),
31                                 RepeatBehavior = RepeatBehavior.Forever,
32                                 PathGeometry = new PathGeometry(new List<PathFigure>() { new PathFigure(new Point(left, 0), new List<PathSegment>() { new LineSegment(new Point(left, panel.ActualHeight), false) }, false) }),
33                                 Source = PathAnimationSource.Y
34                             };
35                             pack.BeginAnimation(Canvas.TopProperty, doubleAnimation);
36                             DoubleAnimation doubleAnimation1 = new DoubleAnimation(360, new Duration(new TimeSpan(0, 0, 10)))
37                             {
38                                 RepeatBehavior = RepeatBehavior.Forever,
39
40                             };
41                             pack.RenderTransform.BeginAnimation(RotateTransform.AngleProperty, doubleAnimation1);
42                         }
43                     }));
44                 }
45             }));
46         }

原文地址:https://www.cnblogs.com/RedSky/p/9056648.html

时间: 2024-11-08 13:42:06

WPF桌面下雪效果的相关文章

桌面下雪效果

一个简单的下雪效果 MainWindow: 1.主界面通过DispatcherTimer给Grid生成雪花 2.雪花飘落后再讲雪花从Grid容器中移除 public partial class MainWindow { public MainWindow() { InitializeComponent(); Closing += (s, e) => ViewModelLocator.Cleanup(); Loaded += MainWindow_Loaded; } private void Ma

桌面下雪效果(二)

增加系统托盘图标,并取消任务栏图标 1.取消任务栏图标 启动窗口设置ShowInTaskbar="False" <Window x:Class="SnowEffect.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml&q

wpf 模拟3D效果(和手机浏览图片效果相似)(附源码)

原文 wpf 模拟3D效果(和手机浏览图片效果相似)(附源码) pf的3D是一个很有意思的东西,类似于ps的效果,类似于电影动画的效果,因为动画的效果,(对于3D基础的摄像机,光源,之类不介绍,对于依赖属性也不介绍.),个人认为,依赖属性这个东西,有百分之五十是为了3D而存在.(自己写的类似于demo的东西)先上图,无图无真相这是demo的整个效果图,可以用鼠标移动,触摸屏也可以手指滑动,图片会移动,然后移动结束,会有一个回弹的判断. <Window x:Class="_3Dshow.Wi

关情纸尾-----Quartz2D定时器CADisplayLink下雪效果

定时器CADisplayLink下雪效果 1.定时器雪花整体思路: 先在控制器View面绘制一个雪花. 在View加载完毕后,添加一个定时器. 在定时器方法当中调用得绘方法. 在绘图方法当不段的去修改雪花的Y值. 当雪花的Y值超过屏幕的高度时,让雪花的Y值重新设为0.从最顶部开始. 2.添加定时器实现方案 第一种采用NSTime 第二种采用CADisplayLink 最终采用CADisplayLink方案. 2.1为什么采用CADisplayLink方案不用NSTime? 首先要了解setNee

WPF实现毛玻璃效果

1和2需要Microsoft.WindowsAPICodePack.Shell.dll 和引用using System.Windows.Interop,并只能在有DwmApi.dll 版本的Windows操作系统下使用.这两种方法的共同缺点是:在启动窗体时会一闪. 一. [StructLayout(LayoutKind.Sequential)] public struct MARGINS { public int cxLeftWidth; public int cxRightWidth; pub

再次推荐一款逼真的HTML5下雪效果

再次推荐一款逼真的下雪效果 效果图: 效果描述:之前推荐过一款下雪的jQuery插件之前的那款下降速度比较缓慢,今天推荐的这个下降速度比较快,大雪哇 使用方法:1.将index.html中的样式复制到你的样式表中2.将body中的代码部分拷贝到你需要的地方(注意保持图片.js文件路径的正确性) 查看效果:http://hovertree.com/texiao/jquery/36/ 下载地址 效果二 效果3 更多特效:http://www.cnblogs.com/roucheng/p/texiao

Win桌面三维效果

进入Windows 7旗舰版的桌面后,按住组合键Win + Ctrl + Tab即可将三维效果定在某个位置. 现在提供一种建立快捷方式的办法: 在桌面空白处右击鼠标-新建-快捷方式,在弹出的对话框中输入C:\Windows\System32\rundll32.exe DwmApi #105,“C”为Windows 7所在分区-然后单击下一步完成,就在桌面上创建了一个开启立体窗口转换的快捷方式. Win桌面三维效果

WPF 实现水纹效果

原文:WPF 实现水纹效果 鼠标滑过产生水纹,效果图如下: ? ? XMAL就放置了一个img标签 ? 后台主要代码 窗体加载: private void Window_Loaded(object sender, RoutedEventArgs e) { Bitmap bmp = Properties.Resources.water; ww = new WaterWave(bmp); //设置显示大小和图片一样 this.gInfo.Width = bmp.Width; this.gInfo.H

WPF实现抽屉效果

原文:WPF实现抽屉效果 界面代码(xaml): <Window x:Class="TransAnimation.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Hei