zoukankan      html  css  js  c++  java
  • Silverlight放烟花,祝所有程序员新年快乐!!

          新的一年即将到来,我们也老了一岁,闲来无事,放个烟花庆祝自己又老了一岁,当然,除此之外还是有很多可以庆祝的。

          多余的话就不多说了,主要实现原理参考了JS放烟花的代码,但是烟花的播放自然是采用了Storyboard类啦~~,烟花就是一个Ellipse随机填充了一幅烟花效果图。实现过程相当简单,我也上传了代码,并且贴出主要的代码段:

    构造烟花对象:

    构造烟花对象
                    ImageBrush imagebrush = new ImageBrush();
                    Uri uri 
    = new Uri(uris[random.Next(uris.Count)], UriKind.Relative);
                    imagebrush.ImageSource 
    = new BitmapImage(uri);
                    ellipse.Fill 
    = imagebrush;
                    ellipse.Visibility 
    = Visibility.Visible;
                    ellipse.Width 
    = 10;
                    ellipse.Height 
    = 10;
                    ellipse.SetValue(Canvas.LeftProperty, 
    this.X - ellipse.Width / 2);
                    ellipse.SetValue(Canvas.TopProperty, 
    this.Y);
                    ((Canvas)
    this.Parent).Children.Add(ellipse);
                    RandomPosition(ellipse);

    开始播放烟花:

    播放烟花
    public void RandomPosition(Ellipse ellipse)
            {
                Storyboard mystoryboard 
    = new Storyboard();
                mystoryboard.Completed 
    += new EventHandler(mystoryboard_Completed);
                Duration dura 
    = new Duration(new TimeSpan(000000001000));

                
    #region 放大渐变
                DoubleAnimation dua1 
    = new DoubleAnimation();
                dua1.Duration 
    = dura;
                dua1.From 
    = ellipse.Width;
                dua1.To 
    = 250;

                DoubleAnimation dua2 
    = new DoubleAnimation();
                dua2.Duration 
    = dura;
                dua2.From 
    = ellipse.Height;
                dua2.To 
    = 250;

                Storyboard.SetTarget(dua1, ellipse);
                Storyboard.SetTargetProperty(dua1, 
    new PropertyPath("(Ellipse.Width)"));
                Storyboard.SetTarget(dua2, ellipse);
                Storyboard.SetTargetProperty(dua2, 
    new PropertyPath("(Ellipse.Height)"));
                mystoryboard.Children.Add(dua1);
                mystoryboard.Children.Add(dua2);
                
    #endregion

                
    #region 透明渐变
                DoubleAnimation dua3 
    = new DoubleAnimation();
                dua3.Duration 
    = dura;
                dua3.From 
    = 1;
                dua3.To 
    = 0;
                Storyboard.SetTarget(dua3, ellipse);
                Storyboard.SetTargetProperty(dua3, 
    new PropertyPath("(Ellipse.Opacity)"));
                mystoryboard.Children.Add(dua3);
                
    #endregion

                
    #region 位置渐变
                DoubleAnimation dua4 
    = new DoubleAnimation();
                dua4.Duration 
    = dura;
                dua4.From 
    = this.X - ellipse.Width / 2;
                dua4.To 
    = this.X - ellipse.Width - 100;
                Storyboard.SetTarget(dua4, ellipse);
                Storyboard.SetTargetProperty(dua4, 
    new PropertyPath("(Canvas.Left)"));
                mystoryboard.Children.Add(dua4);

                DoubleAnimation dua5 
    = new DoubleAnimation();
                dua5.Duration 
    = dura;
                dua5.From 
    = this.Y;
                dua5.To 
    = this.Y / 2 / 2;
                Storyboard.SetTarget(dua5, ellipse);
                Storyboard.SetTargetProperty(dua5, 
    new PropertyPath("(Canvas.Top)"));
                mystoryboard.Children.Add(dua5);
                
    #endregion
                mystoryboard.Begin();
            }

     项目源代码下载

    效果来了~~~

    • 欢迎关注收取阅读最新文章
    • 好看点个推荐呗~
    • 出处:http://www.cnblogs.com/viter/
    • 本文版权归作者和博客园共有,欢迎个人转载,必须保留此段声明;商业转载请联系授权,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    • 欢迎大家关注我的微信公众号,一起学习一起进步
  • 相关阅读:
    如何使用RedisTemplate访问Redis数据结构
    redis 简单限流
    Caused by: org.apache.ibatis.binding.BindingException: Parameter '__frch_item_0' not found. Available parameters are [list]
    简单的根据权重随机数负载均衡算法
    后缀表达式(逆波兰表达式)计算器
    ASP.NET C# 如何在程序中控制IIS服务或应用程序池重启?
    iis7下url重写后,已存在的html不能访问了(未能执行URL)的解决方法
    IIS支持apk文件
    用vbs脚本远程登录批量交换机保存配置
    卷积神经网络入门案例-数字图像识别
  • 原文地址:https://www.cnblogs.com/viter/p/1632875.html
Copyright © 2011-2022 走看看