private void MoveFirework()
 {
     for (int i = this.fireworks.Count - 1; i >= 0; i--)
     {
         MagicDot dot = this.fireworks[i];
         dot.RunFirework();
         if (dot.Opacity <= 0.1)
         {
             this.LayoutRoot.Children.Remove(dot);
             this.fireworks.Remove(dot);
         }
     }
 }
        private void AddFirework(double x, double y)
        {
            for (int i = 0; i < FireworkCount; i++)
            {
                double size  = SizeMin + (SizeMax - SizeMin) * random.NextDouble();
                byte   red   = (byte)(128 + (128 * random.NextDouble()));
                byte   green = (byte)(128 + (128 * random.NextDouble()));
                byte   blue  = (byte)(128 + (128 * random.NextDouble()));

                double xVelocity = XVelocity - 2 * XVelocity * random.NextDouble();
                double yVelocity = -YVelocity *random.NextDouble();

                MagicDot dot = new MagicDot(red, green, blue, size);
                dot.X         = x;
                dot.Y         = y;
                dot.XVelocity = xVelocity;
                dot.YVelocity = yVelocity;
                dot.Gravity   = Gravity;
                dot.RunFirework();
                this.fireworks.Add(dot);

                this.LayoutRoot.Children.Add(dot);
            }
        }