Beispiel #1
0
 //Submenu Planaridad
 private void porCorolariosToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (grafos != null && grafos.Count != 0)
     {
         if (grafo_activo != null && grafo_activo.getNumeroVertices() >= 2 && grafo_activo.getNumeroAristas() != 0)
         {
             string cad = "\n\n ";
             if (grafo_activo.esPlanoPorCorolarios(ref cad))
             {
                 MessageBox.Show("\n El Grafo " + grafo_activo.getId().ToString() + " es PLANO. " + cad, " Planaridad por corolarios", MessageBoxButtons.OK, MessageBoxIcon.Information);
             }
             else
             {
                 MessageBox.Show("\n El Grafo " + grafo_activo.getId().ToString() + " NO es PLANO. " + cad, " Planaridad por corolarios", MessageBoxButtons.OK, MessageBoxIcon.Error);
             }
         }
     }
 }
        public void aplicaArbolAbarcador(int tipo_grafo, bool ramp)
        {
            Graphics g = Graphics.FromImage(G.getBMP());

            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            clasificaArcos(ramp);

            foreach (CArista a in arcos_retroceso)
            {
                a.dibujateRP(g, G.getBMP(), tp, 1, G.getTipo());
            }

            foreach (CArista a in arcos_avance)
            {
                a.dibujateRP(g, G.getBMP(), tp, 2, G.getTipo());
            }

            foreach (CArista a in arcos_cruzados)
            {
                a.dibujateRP(g, G.getBMP(), tp, 3, G.getTipo());
            }

            string cad  = "\n\n Arcos de árbol (Azul)\n Arcos de retroceso (Rojo)\n Arcos de Avance (Celeste)\n Arcos Cruzados (Verde)";
            string cad2 = "\n\n Arcos de árbol (Azul)\n Arcos de Retroceso (Rojo)\n";
            string cad3 = "\n\n Arcos de árbol (Azul)\n Arcos de Cruzados (Verde)\n";

            if (tipo_grafo == DIRIGIDO)
            {
                if (arcos_retroceso.Count == 0)
                {
                    MessageBox.Show(" El Grafo " + G.getId().ToString() + " es un GDA.                   " + cad, "Recorrido en profundidad", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show(" El Grafo " + G.getId().ToString() + " NO es un GDA ya que tiene arcos de retroceso (Color Rojo).  " + cad, "Recorrido en profundidad", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            else
            {
                if (!ramp)
                {
                    MessageBox.Show(" Resultado para el Grafo " + G.getId().ToString() + cad2, "Recorrido en profundidad (Grafo NO Dirigido)", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show(" Resultado para el Grafo " + G.getId().ToString() + ".                   " + cad3, "Recorrido en amplitud", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            g.Clear(Color.White);
            G.dibujate(tp, G.getBMP());
        }
Beispiel #3
0
 public void coloreoDeGrafoNColores(TabPage tp)
 {
     if (hayNodoSinPintar() && !band2)
     {
         CVertice vert_mge = getNodoDeMayorGradoDeErrorSinPintar();
         if (vert_mge != null)
         {
             int color = -1;
             if (hayColorDisponibeNColores(vert_mge, ref color) && color != -1)
             {
                 pintaNodo4Colores(vert_mge, color);
                 coloreoDeGrafoNColores(tp);
             }
             else
             {
                 band2 = true;
                 MessageBox.Show("\n El Grafo " + G.getId().ToString() + " ha sobrepasado el limite de colores disponible (10)...",
                                 "Número cromatico arbitrario!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
             }
         }
     }
 }