Ejemplo n.º 1
0
        private void startGrain_Click(object sender, RoutedEventArgs e)
        {
            int te;

            if (int.TryParse(grainsNumber.Text, out te))
            {
                updateTimer.Stop();
                grains.Clear();
                for (int i = 0; i < te; i++)
                {
                    GrainBase gb = new GrainBase();
                    gb.ColorBrushIndex = rand.Next(0, 8);
                    gb.Radius          = rand.Next(minRadius, maxRadius);
                    gb.EffectRadius    = rand.Next(160, 300);
                    gb.x   = rand.NextDouble() * Cav.ActualWidth;
                    gb.y   = rand.NextDouble() * Cav.ActualHeight;
                    gb.xa  = rand.NextDouble() * sudu - 1;
                    gb.ya  = rand.NextDouble() * sudu - 1;
                    gb.max = maxJia;
                    grains.Add(gb);
                }
                updateTimer.Start();
            }
            else
            {
                MessageBox.Show("例子数量必须是整数");
            }
        }
Ejemplo n.º 2
0
 private void MainWindow_Loaded(object sender, RoutedEventArgs e)
 {
     Loaded -= MainWindow_Loaded;
     if (!isShowTile)
     {
         bgTile.Visibility = Visibility.Collapsed;
     }
     for (int i = 0; i < maxBrainsNum; i++)
     {
         GrainBase gb = new GrainBase();
         gb.ColorBrushIndex = rand.Next(0, 8);
         gb.Radius          = rand.Next(minRadius, maxRadius);
         gb.EffectRadius    = rand.Next(160, 300);
         gb.x   = rand.NextDouble() * Cav.ActualWidth;
         gb.y   = rand.NextDouble() * Cav.ActualHeight;
         gb.xa  = rand.NextDouble() * sudu - 1;
         gb.ya  = rand.NextDouble() * sudu - 1;
         gb.max = maxJia;
         grains.Add(gb);
     }
 }
Ejemplo n.º 3
0
        public void AyKeyFrame()
        {
            Cav.Children.Clear();

            for (int i = 0; i < grains.Count; i++)
            {
                GrainBase dot = grains[i];
                if (dot.x == null || dot.y == null)
                {
                    continue;
                }
                #region 创建碰撞粒子
                // 粒子位移
                dot.x += dot.xa;
                dot.y += dot.ya;
                // 遇到边界将加速度反向
                dot.xa *= (dot.x.Value > Cav.ActualWidth || dot.x.Value < 0) ? -1 : 1;
                dot.ya *= (dot.y.Value > Cav.ActualHeight || dot.y.Value < 0) ? -1 : 1;
                // 绘制点

                Ellipse elip = new Ellipse();
                //elip.Fill = new SolidColorBrush(OtherTenColor[dot.ColorBrushIndex]);
                elip.Stroke          = new SolidColorBrush(Colors.Transparent);
                elip.StrokeThickness = 0;
                elip.Width           = elip.Height = dot.Radius;
                if (isEffect)
                {
                    RadialGradientBrush rgb = new RadialGradientBrush();
                    GradientStop        gs1 = new GradientStop();
                    var color1 = SolidColorBrushConverter.ToColor("#00" + OtherTenColor[dot.ColorBrushIndex]);
                    gs1.Offset = 1;
                    gs1.Color  = color1;
                    rgb.GradientStops.Add(gs1);

                    GradientStop gs2    = new GradientStop();
                    var          color2 = SolidColorBrushConverter.ToColor("#33" + OtherTenColor[dot.ColorBrushIndex]);
                    gs2.Offset = 0.7;
                    gs2.Color  = color2;
                    rgb.GradientStops.Add(gs2);

                    GradientStop gs3    = new GradientStop();
                    var          color3 = SolidColorBrushConverter.ToColor("#CC" + OtherTenColor[dot.ColorBrushIndex]);//99
                    gs3.Color = color3;
                    rgb.GradientStops.Add(gs3);


                    GradientStop gs4    = new GradientStop();
                    var          color4 = SolidColorBrushConverter.ToColor("#99" + OtherTenColor[dot.ColorBrushIndex]);
                    gs4.Offset = 0.225;
                    gs4.Color  = color4;
                    rgb.GradientStops.Add(gs4);

                    elip.Fill = rgb;
                }

                Canvas.SetLeft(elip, dot.x.Value - 0.5);
                Canvas.SetTop(elip, dot.y.Value - 0.5);

                Cav.Children.Add(elip);
                #endregion
            }
        }