private void demo4_Click(object sender, RoutedEventArgs e) { ps.effectors.Add(new AyChamberBox(0, 0, 600, 400)); var dt = 0.01; var oldMousePosition = AyVector2.Zero; AyFramework.Start(() => { var velocity = newMousePosition.Subtract(oldMousePosition).Multiply(10); velocity = velocity.Add(sampleDirection2(0, Math.PI * 2).Multiply(20)); var color = sampleColor(Colors.Red, Colors.Pink); var life = sampleNumber(2, 4); var size = sampleNumber(4, 8); ps.emit(new AyParticle(newMousePosition, velocity, life, color, size)); oldMousePosition = newMousePosition; ps.simulate(dt); ps.render(ctx); var cnt = AyFramework.canvas.Children; if (cnt.Count > ps.particles.Count()) { int d = cnt.Count - ps.particles.Count(); AyFramework.canvas.Children.RemoveRange(0, d); } }); }
/// <summary> /// 每帧会发射一个粒子,其位置在画布中间(200,200),发射方向是360度,速率为100,生命为1秒,红色、半径为5象素 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void demo2_Click(object sender, RoutedEventArgs e) { var dt = 0.01; AyFramework.Start(() => { ps.emit(new AyParticle(new AyVector2(200, 200), sampleDirection().Multiply(100), 1, Colors.Green, 5)); ps.simulate(dt); AyFramework.clearCanvas(); ps.render(ctx); }); }
private void demo1_Click(object sender, RoutedEventArgs e) { AyFramework.clearCanvas(); var position = new AyVector2(10, 200); var velocity = new AyVector2(50, -50); var acceleration = new AyVector2(0, 10); var dt = 0.1; AyFramework.Start(() => { position = position.Add(velocity.Multiply(dt)); velocity = velocity.Add(acceleration.Multiply(dt)); ps.CreateEllipse(position.X, position.Y, 5, Colors.Green, Colors.Yellow, ctx); }); }
void ctx_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { AyFramework.clearCanvas(); var point = e.GetPosition(ctx); var dt = 0.015; var ddd = Color.FromRgb(Convert.ToByte(rd.Next(0, 255)), Convert.ToByte(rd.Next(0, 255)), Convert.ToByte(rd.Next(0, 255))); AyFramework.stop(); AyFramework.Start(() => { ps.emit(new AyParticle(new AyVector2(point.X, point.Y), sampleDirection().Multiply(100), 1, ddd, 5)); ps.simulate(dt); AyFramework.clearCanvas(); ps.render(ctx); }); }
private void demo3_Click(object sender, RoutedEventArgs e) { ps.effectors.Add(new AyChamberBox(0, 0, 600, 400)); var dt = 0.01; AyFramework.Start(() => { ps.emit(new AyParticle(new AyVector2(100, 200), sampleDirection2(Math.PI * 1.75, Math.PI * 2).Multiply(400), 6, sampleColor(Colors.Green, Colors.Yellow), 6)); ps.simulate(dt); ps.render(ctx); var cnt = AyFramework.canvas.Children; if (cnt.Count > ps.particles.Count()) { int d = cnt.Count - ps.particles.Count(); AyFramework.canvas.Children.RemoveRange(0, d); } }); }