private void BtnAnimacion_Click(object sender, EventArgs e)
        {
            List <Vertice> lv       = G.getLv();
            Graphics       graphics = Graphics.FromImage(Animacion);

            pictureBox1.Image = Animacion;
            List <Point> Linea = new List <Point>();
            List <Point> Puntos = new List <Point>();
            Point        punto = new Point();
            int          a = 0, b, c;
            int          x = 0, y, z;

            while (Presa.Count != 0)
            {
                b = Presa[a].GetcontAristas();
                foreach (Arista arista in Presa[a].getCaminoActual()[b].getLa())
                {
                    if (arista.getVertex().Equals(Presa[a].getCaminoActual()[b + 1]))
                    {
                        Linea = arista.getLinea();
                        Presa[a].SetAristaActual(arista);
                    }
                }
                c = Presa[a].GetcontPuntos();
                if (Linea.Count - 1 <= c)//5
                {
                    c = Linea.Count - 1;
                }
                punto = Linea[c];
                Presa[a].SetPuntoActual(punto);
                Puntos.Add(punto);
                DibujarCirculo(punto, BrochaPresa, Animacion);
                DibujarId(punto, BrochaID, Animacion, Presa[a].getId());
                Presa[a].SetcontPunto(Presa[a].GetcontPuntos() + 1);//5
                if (Presa[a].GetcontPuntos() >= Linea.Count)
                {
                    Presa[a].SetcontPunto(0);
                    Presa[a].SetcontAristas(Presa[a].GetcontAristas() + 1);
                }
                if (Presa[a].GetcontAristas() == Presa[a].getCaminoActual().Count - 1)
                {
                    DibujarCirculo(punto, BrochaPresa, Grafo);
                    pictureBox1.BackgroundImage = Grafo;
                    Presa.Remove(Presa[a]);
                }
                a++;
                if (a >= Presa.Count)
                {
                    a = 0;
                    while (true)
                    {
                        bool Principal = false;
                        if (Depredador[x].Equals(DepredadorPrincipal))
                        {
                            Principal = true;
                        }
                        y = Depredador[x].GetcontAristas();
                        foreach (Arista arista in Depredador[x].getCaminoActual()[y].getLa())
                        {
                            if (arista.getVertex().getId() == Depredador[x].getCaminoActual()[y + 1].getId())
                            {
                                Linea = arista.getLinea();
                                Depredador[x].SetAristaActual(arista);
                            }
                        }
                        z = Depredador[x].GetcontPuntos();
                        if (Linea.Count - 1 <= z)
                        {
                            z = Linea.Count - 1;
                        }
                        punto = Linea[z];
                        Point radar = Radar(Depredador[x], Puntos, punto);
                        if (Principal == true)
                        {
                            DibujarRadar(punto, Animacion);
                            if (radar.X == 0 && radar.Y == 0)
                            {
                                Pen Direccion = new Pen(Color.DarkRed, 8);
                                DibujarDireccionOptima(Animacion, punto, Linea[Linea.Count - 1], Direccion);
                            }
                            else
                            {
                                ListaRadar.Items.Add(radar);
                                ListaRadar.Update();
                                Arista arista         = EncontrarCamino(radar);
                                int    Origen         = Math.Abs(radar.X - arista.getVertexOrigen().getX()) + Math.Abs(radar.Y - arista.getVertexOrigen().getY());
                                int    Destino        = Math.Abs(radar.X - arista.getVertex().getX()) + Math.Abs(radar.Y - arista.getVertex().getY());
                                Pen    DireccionPresa = new Pen(Color.DeepSkyBlue, 8);
                                if (Origen < Destino)
                                {
                                    DibujarDireccionOptima(Animacion, radar, new Point(arista.getVertexOrigen().getX(), arista.getVertexOrigen().getY()), DireccionPresa);
                                }
                                else
                                {
                                    DibujarDireccionOptima(Animacion, radar, new Point(arista.getVertex().getX(), arista.getVertex().getY()), DireccionPresa);
                                }
                                Pen Direccion = new Pen(Color.DarkRed, 8);
                                DibujarDireccionOptima(Animacion, punto, radar, Direccion);
                            }
                        }
                        Cazado(Puntos, punto, Depredador[x]);
                        DibujarCirculo(punto, BrochaDepredador, Animacion);
                        DibujarId(punto, BrochaID, Animacion, Depredador[x].getId());
                        Depredador[x].SetcontPunto(Depredador[x].GetcontPuntos() + 1);
                        if (Depredador[x].GetcontPuntos() >= Linea.Count)
                        {
                            Depredador[x].SetcontPunto(0);
                            Depredador[x].SetVerticeActual(Depredador[x].getCaminoActual()[y + 1]);
                            Depredador[x].SetcontAristas(Depredador[x].GetcontAristas() + 1);
                            if (radar.X == 0 && radar.Y == 0 && Depredador[x].GetPathDFS() == false)
                            {
                                List <Vertice>  Visitados   = new List <Vertice>();
                                Stack <Vertice> Pila        = new Stack <Vertice>();
                                List <Vertice>  CaminoNuevo = new List <Vertice>();
                                Pila.Push(Depredador[x].GetVerticeActual());
                                Visitados.Add(Depredador[x].GetVerticeActual());
                                CaminoNuevo.Add(Depredador[x].GetVerticeActual());
                                DFS(Pila, Visitados, CaminoNuevo);
                                Depredador[x].SetCaminoActual(CaminoNuevo);
                                Depredador[x].SetVerticeActual(CaminoNuevo[0]);
                                Depredador[x].SetcontAristas(0);
                                Depredador[x].SetPathDFS(true);
                            }

                            if (radar.X != 0 && radar.Y != 0)
                            {
                                Arista arista = EncontrarCamino(radar);
                                if (arista.getVertexOrigen().Equals(Depredador[x].GetVerticeActual()))
                                {
                                    Dijkstra D = new Dijkstra(G, Depredador[x].GetVerticeActual(), arista.getVertex());
                                    D.GetCamino().Reverse();
                                    Depredador[x].SetCaminoActual(D.GetCamino());
                                    Depredador[x].SetVerticeActual(D.GetCamino()[0]);
                                }
                                else
                                {
                                    Dijkstra D = new Dijkstra(G, Depredador[x].GetVerticeActual(), arista.getVertexOrigen());
                                    D.GetCamino().Reverse();
                                    Depredador[x].SetCaminoActual(D.GetCamino());
                                    Depredador[x].SetVerticeActual(D.GetCamino()[0]);
                                }
                                Depredador[x].SetcontAristas(0);
                                Depredador[x].SetPathDFS(false);
                            }
                        }
                        if (Depredador[x].GetcontAristas() == Depredador[x].getCaminoActual().Count - 1)
                        {
                            Depredador[x].SetcontAristas(0);
                        }
                        x++;
                        if (x >= Depredador.Count)
                        {
                            x = 0;
                            pictureBox1.Refresh();
                            LimpiarBitmap(Animacion, Color.Transparent);
                            break;
                        }
                    }
                    Puntos.Clear();
                }
            }
            this.BtnAnimacion.Enabled = false;
        }
        public void addArista(Vertice vDest, double pond, Vertice vOrigen, List <Point> Lista)
        {
            Arista e = new Arista(vDest, pond, vOrigen, Lista);

            la.Add(e);
        }
 public void SetAristaActual(Arista arista)
 {
     AristaActual = arista;
 }