Ejemplo n.º 1
0
        private void pictureBox1_Click(object sender, MouseEventArgs e)
        {
            int abs = (e.Location.X * ((PictureBox)sender).Image.Width) / ((PictureBox)sender).Width;
            int ord = (e.Location.Y * ((PictureBox)sender).Image.Height) / ((PictureBox)sender).Height;

            //Logger.GlobalLogger.debug("ABS : " + abs + " ORD : " + ord);
            if (e.Button == MouseButtons.Left)
            {
                pEnd.X = abs;
                pEnd.Y = ord;
            }
            else if (e.Button == MouseButtons.Right)
            {
                pStart.X = abs;
                pStart.Y = ord;
            }
            else if (e.Button == MouseButtons.Middle)
            {
                PositionElement pObstacle = new PositionElement();
                pObstacle.X = abs;
                pObstacle.Y = ord;
                pAutre.Add(pObstacle);
            }


            PositionZoneTravail pZone = new PositionZoneTravail();

            pZone.A.X = 0;
            pZone.A.Y = 0;
            pZone.B.X = 800;
            pZone.B.Y = 600;


            astar = new AStar(pStart, pEnd, pZone);
            astar.AddObstacles(pAutre);

            DateTime dt1 = DateTime.Now;
            Track    tr  = astar.CalculerTrajectoire();
            DateTime dt2 = DateTime.Now;

            Logger.GlobalLogger.info("Temps calcul : " + (dt2 - dt1).Milliseconds);
            //Track tr = astar.CalculerTrajectoire();
            tr.nettoyerTrajectoire();
            List <QuadrillageCoord> quad = astar.CalculerQuadrillage();



            Bitmap bitmap = new Bitmap(pZone.B.X, pZone.B.Y);

            dessinerTrack(bitmap, tr);



            Point c = new Point(pEnd.X, pEnd.Y);

            //dessinerPoint(bitmap, c, Brushes.Red);
            dessinerRectangle(bitmap, astar.CalculerRectangle(pEnd), Brushes.Red);
            c = new Point(pStart.X, pStart.Y);
            //dessinerPoint(bitmap, c, Brushes.Green);

            dessinerRectangle(bitmap, astar.CalculerRectangle(pStart), Brushes.Green);
            foreach (PositionElement obstacle in pAutre)
            {
                dessinerRectangle(bitmap, astar.CalculerRectangle(obstacle), Brushes.Gray);
                //dessinerPoint(bitmap, c, Brushes.Gray);
            }
            foreach (QuadrillageCoord q in quad)
            {
                dessinerLigne(bitmap, q.A, q.B, Color.Gray, 1);
            }

            pictureBox1.Image = bitmap;
        }