Esempio n. 1
0
        // Обработка клика на кнопку
        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();
        }
Esempio n. 2
0
 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;
 }