// Обработка клика на кнопку private void button_Click(object sender, RoutedEventArgs e) { /* * 1) init circle * 2) init worker * 3) add worker to list * 4) add circle to canvas * 5) run worker */ // Создается новый шар с указанными (случайными) параметрами PhysicalCircle circle = new PhysicalCircle(new Ellipse { Height = 30, Width = 30, Fill = new SolidColorBrush(Color.FromArgb(255, (byte)random.Next(0, 255), (byte)random.Next(0, 255), (byte)random.Next(0, 255))), }, new Position(0, 0)); // Создается объект, который содержит поток для вычисления координат этого шара PhysicalCircleWorker worker = new PhysicalCircleWorker(circle, canvas, workers) { XSpeed = random.Next(minSpeed, maxSpeed), YSpeed = random.Next(minSpeed, maxSpeed), }; // Отрисовывается шар и запускается поток workers.Add(worker); canvas.Children.Add(circle.Circle); worker.Start(); }
public PhysicalCircleWorker(PhysicalCircle circle, Canvas canvas, List <PhysicalCircleWorker> anotherWorkers) { Circle = circle; CurrentPosition = Circle.Center; XSpeed = 3; // todo hardcode YSpeed = 3; _canvas = canvas; dispatcherTimer = new DispatcherTimer(); this.anotherWorkers = anotherWorkers; }