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("例子数量必须是整数"); } }
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); } }
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 } }