예제 #1
0
        private void DibujarEnlace(int peso, NodoVisual desde, NodoVisual hasta) // Funcion : Dibujo; Se encarga de trazar una linea entre dos nodos
        {
            Graphics     g            = prims_kruskal.Principal.K.CreateGraphics();
            Point        d            = new Point(desde.Center.X + 15, desde.Center.Y + 15);
            Point        h            = new Point(hasta.Center.X + 15, hasta.Center.Y + 15);
            EnlaceVisual e            = new EnlaceVisual(peso, desde, hasta);
            Pen          pen          = new Pen(pincelNegro, 3);
            bool         selectEnlace = true;

            if (this.enlaces.Count > 0)
            {
                foreach (var Enlace in enlaces)
                {
                    if (e.NodoA == Enlace.NodoA && e.NodoB == Enlace.NodoB || e.NodoB == Enlace.NodoA && e.NodoA == Enlace.NodoB)
                    {
                        MessageBox.Show("No se puede repetir un enlace ya creado", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        selectEnlace = false;
                    }
                }
            }
            if (e.NodoA == e.NodoB)
            {
                MessageBox.Show("No se puede crear un enlace a si mismo", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                selectEnlace = false;
            }
            if (selectEnlace)
            {
                enlaces.Add(e);
                g.DrawLine(new Pen(e.Color, 3), d, h);
                g.FillEllipse(pincelVerde, e.Medio.X, e.Medio.Y, 15, 15);
                g.DrawString(e.Peso.ToString(), letra, pincelVerde, e.Medio.X + 3, e.Medio.Y + 15);
                this.g.AgregarEnlace(e);
            }
        }
예제 #2
0
        private void DibujarEnlace(int peso, NodoVisual desde, NodoVisual hasta) // Funcion : Dibujo; Se encarga de trazar una linea entre dos nodos
        {
            Point        d = new Point(desde.Center.X + TamNodo / 2, desde.Center.Y + TamNodo / 2);
            Point        h = new Point(hasta.Center.X + TamNodo / 2, hasta.Center.Y + TamNodo / 2);
            EnlaceVisual e = new EnlaceVisual(peso, desde, hasta);

            bool selectEnlace = true;

            if (this.enlaces.Count > 0)
            {
                foreach (var Enlace in enlaces)
                {
                    if (e.NodoA == Enlace.NodoA && e.NodoB == Enlace.NodoB || e.NodoB == Enlace.NodoA && e.NodoA == Enlace.NodoB)
                    {
                        //MessageBox.Show("No se puede repetir un enlace ya creado", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        Enlace.Peso = peso;
                        this.Dibujar(true);
                        selectEnlace = false;
                        return;
                    }
                }
            }
            if (e.NodoA == e.NodoB)
            {
                MessageBox.Show("No se puede crear un enlace a si mismo", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                selectEnlace = false;
            }
            if (selectEnlace)
            {
                enlaces.Add(e);
                this.g.AgregarEnlace(e);
                this.Dibujar(true);
            }
        }
예제 #3
0
        private void btnGrafo3_Click(object sender, EventArgs e)  // crea grafo de 3 nodos
        {
            this.Reset();
            var n1 = new NodoVisual();

            n1.Center = new Point(13, 13);
            n1.nombre = "N1";
            var n2 = new NodoVisual();

            n2.Center = new Point(300, 200);
            n2.nombre = "N2";
            var n3 = new NodoVisual();

            n3.Center = new Point(450, 13);
            n3.nombre = "N3";

            g.AgregarNodo(n1);
            g.AgregarNodo(n2);
            g.AgregarNodo(n3);

            this.nodos.Add(n1);
            this.nodos.Add(n2);
            this.nodos.Add(n3);

            var e1 = new EnlaceVisual(2, n1, n2);
            var e2 = new EnlaceVisual(7, n2, n3);
            var e3 = new EnlaceVisual(3, n1, n3);

            g.AgregarEnlace(e1);
            g.AgregarEnlace(e2);
            g.AgregarEnlace(e3);

            this.enlaces.Add(e1);
            this.enlaces.Add(e2);
            this.enlaces.Add(e3);

            this.Dibujar();
        }
예제 #4
0
        private void abrirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    this.Reset();
                    if (File.Exists(openFileDialog1.FileName))
                    {
                        rutaArchivo = openFileDialog1.FileName;
                        using (var read = new StreamReader(openFileDialog1.FileName, Encoding.Default))
                        {
                            // 0-> nodo 1-> enlace 2-> imagen
                            byte   tipoTag = 0;
                            string linea;
                            while ((linea = read.ReadLine()) != null)
                            {
                                if (linea.StartsWith("["))
                                {
                                    if (linea.Equals(tagNodos))
                                    {
                                        tipoTag = 0;
                                    }
                                    else if (linea.Equals(tagEnlaces))
                                    {
                                        tipoTag = 1;
                                    }
                                    else if (linea.Equals(tagImagen))
                                    {
                                        tipoTag = 2;
                                    }
                                    continue;
                                }
                                if (tipoTag == 0)
                                {
                                    var n1 = new NodoVisual(linea);
                                    AgregaNodo(n1);
                                }
                                else if (tipoTag == 1)
                                {
                                    var e1 = new EnlaceVisual(linea, this.nodos);
                                    g.AgregarEnlace(e1);
                                    this.enlaces.Add(e1);
                                }
                                else if (tipoTag == 2)
                                {
                                    AsignarImagen(Path.Combine(Path.GetDirectoryName(openFileDialog1.FileName), linea));
                                }
                            }
                        }

                        salvado            = true;
                        tlabelArchivo.Text = rutaArchivo;
                        tlabelGrabado.Text = " ";
                        this.Dibujar(false);
                    }
                    else
                    {
                        throw new Exception("No existe el archivo " + openFileDialog1.FileName);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                var eclosed = e as FormClosingEventArgs;
                if (eclosed != null)
                {
                    eclosed.Cancel = true;
                }
            }
        }
예제 #5
0
        private void btnGrafo12_Click(object sender, EventArgs e)
        {
            this.Reset();

            var n1 = new NodoVisual();

            n1.Center = new Point(13, 13);
            n1.nombre = "N1";
            var n2 = new NodoVisual();

            n2.Center = new Point(300, 200);
            n2.nombre = "N2";
            var n3 = new NodoVisual();

            n3.Center = new Point(450, 13);
            n3.nombre = "N3";
            var n4 = new NodoVisual();

            n4.Center = new Point(450, 350);
            n4.nombre = "N4";
            var n5 = new NodoVisual();

            n5.Center = new Point(13, 350);
            n5.nombre = "N5";
            var n6 = new NodoVisual();

            n6.Center = new Point(200, 200);
            n6.nombre = "N6";
            var n7 = new NodoVisual();

            n7.Center = new Point(570, 405);
            n7.nombre = "N7";
            var n8 = new NodoVisual();

            n8.Center = new Point(570, 280);
            n8.nombre = "N8";
            var n9 = new NodoVisual();

            n9.Center = new Point(400, 150);
            n9.nombre = "N9";
            var n10 = new NodoVisual();

            n10.Center = new Point(500, 200);
            n10.nombre = "N10";
            var n11 = new NodoVisual();

            n11.Center = new Point(50, 405);
            n11.nombre = "N11";
            var n12 = new NodoVisual();

            n12.Center = new Point(200, 405);
            n12.nombre = "N12";


            g.AgregarNodo(n1);
            g.AgregarNodo(n2);
            g.AgregarNodo(n3);
            g.AgregarNodo(n4);
            g.AgregarNodo(n5);
            g.AgregarNodo(n6);
            g.AgregarNodo(n7);
            g.AgregarNodo(n8);
            g.AgregarNodo(n9);
            g.AgregarNodo(n10);
            g.AgregarNodo(n11);
            g.AgregarNodo(n12);

            this.nodos.Add(n1);
            this.nodos.Add(n2);
            this.nodos.Add(n3);
            this.nodos.Add(n4);
            this.nodos.Add(n5);
            this.nodos.Add(n6);
            this.nodos.Add(n7);
            this.nodos.Add(n8);
            this.nodos.Add(n9);
            this.nodos.Add(n10);
            this.nodos.Add(n11);
            this.nodos.Add(n12);

            var e1  = new EnlaceVisual(2, n1, n2);
            var e2  = new EnlaceVisual(7, n2, n3);
            var e3  = new EnlaceVisual(3, n1, n3);
            var e4  = new EnlaceVisual(20, n1, n6);
            var e5  = new EnlaceVisual(5, n3, n6);
            var e6  = new EnlaceVisual(9, n1, n5);
            var e7  = new EnlaceVisual(3, n5, n4);
            var e8  = new EnlaceVisual(22, n4, n7);
            var e9  = new EnlaceVisual(8, n7, n8);
            var e10 = new EnlaceVisual(1, n9, n10);
            var e11 = new EnlaceVisual(10, n10, n11);
            var e12 = new EnlaceVisual(52, n11, n12);
            var e13 = new EnlaceVisual(19, n12, n7);

            g.AgregarEnlace(e1);
            g.AgregarEnlace(e2);
            g.AgregarEnlace(e3);
            g.AgregarEnlace(e4);
            g.AgregarEnlace(e5);
            g.AgregarEnlace(e6);
            g.AgregarEnlace(e7);
            g.AgregarEnlace(e8);
            g.AgregarEnlace(e9);
            g.AgregarEnlace(e10);
            g.AgregarEnlace(e11);
            g.AgregarEnlace(e12);
            g.AgregarEnlace(e13);

            this.enlaces.Add(e1);
            this.enlaces.Add(e2);
            this.enlaces.Add(e3);
            this.enlaces.Add(e4);
            this.enlaces.Add(e5);
            this.enlaces.Add(e6);
            this.enlaces.Add(e7);
            this.enlaces.Add(e8);
            this.enlaces.Add(e9);
            this.enlaces.Add(e10);
            this.enlaces.Add(e11);
            this.enlaces.Add(e12);
            this.enlaces.Add(e13);

            this.Dibujar();
        }
예제 #6
0
        private void btnGrafo6_Click(object sender, EventArgs e)
        {
            this.Reset();

            var n1 = new NodoVisual();

            n1.Center = new Point(13, 13);
            n1.nombre = "N1";
            var n2 = new NodoVisual();

            n2.Center = new Point(300, 200);
            n2.nombre = "N2";
            var n3 = new NodoVisual();

            n3.Center = new Point(450, 13);
            n3.nombre = "N3";
            var n4 = new NodoVisual();

            n4.Center = new Point(450, 350);
            n4.nombre = "N4";
            var n5 = new NodoVisual();

            n5.Center = new Point(13, 350);
            n5.nombre = "N5";
            var n6 = new NodoVisual();

            n6.Center = new Point(200, 200);
            n6.nombre = "N6";

            g.AgregarNodo(n1);
            g.AgregarNodo(n2);
            g.AgregarNodo(n3);
            g.AgregarNodo(n4);
            g.AgregarNodo(n5);
            g.AgregarNodo(n6);

            this.nodos.Add(n1);
            this.nodos.Add(n2);
            this.nodos.Add(n3);
            this.nodos.Add(n4);
            this.nodos.Add(n5);
            this.nodos.Add(n6);

            var e1 = new EnlaceVisual(2, n1, n2);
            var e2 = new EnlaceVisual(7, n2, n3);
            var e3 = new EnlaceVisual(3, n1, n3);
            var e4 = new EnlaceVisual(20, n1, n6);
            var e5 = new EnlaceVisual(5, n3, n6);
            var e6 = new EnlaceVisual(9, n1, n5);
            var e7 = new EnlaceVisual(3, n5, n4);

            g.AgregarEnlace(e1);
            g.AgregarEnlace(e2);
            g.AgregarEnlace(e3);
            g.AgregarEnlace(e4);
            g.AgregarEnlace(e5);
            g.AgregarEnlace(e6);
            g.AgregarEnlace(e7);

            this.enlaces.Add(e1);
            this.enlaces.Add(e2);
            this.enlaces.Add(e3);
            this.enlaces.Add(e4);
            this.enlaces.Add(e5);
            this.enlaces.Add(e6);
            this.enlaces.Add(e7);

            this.Dibujar();
        }
예제 #7
0
        private void btnGrafo12_Click(object sender, EventArgs e)
        {
            this.Reset();

            var n1 = new NodoVisual();
            n1.Center = new Point(13, 13);
            n1.nombre = "N1";
            var n2 = new NodoVisual();
            n2.Center = new Point(300, 200);
            n2.nombre = "N2";
            var n3 = new NodoVisual();
            n3.Center = new Point(450, 13);
            n3.nombre = "N3";
            var n4 = new NodoVisual();
            n4.Center = new Point(450, 350);
            n4.nombre = "N4";
            var n5 = new NodoVisual();
            n5.Center = new Point(13, 350);
            n5.nombre = "N5";
            var n6 = new NodoVisual();
            n6.Center = new Point(200, 200);
            n6.nombre = "N6";
            var n7 = new NodoVisual();
            n7.Center = new Point(570, 405);
            n7.nombre = "N7";
            var n8 = new NodoVisual();
            n8.Center = new Point(570, 280);
            n8.nombre = "N8";
            var n9 = new NodoVisual();
            n9.Center = new Point(400, 150);
            n9.nombre = "N9";
            var n10 = new NodoVisual();
            n10.Center = new Point(500, 200);
            n10.nombre = "N10";
            var n11 = new NodoVisual();
            n11.Center = new Point(50, 405);
            n11.nombre = "N11";
            var n12 = new NodoVisual();
            n12.Center = new Point(200, 405);
            n12.nombre = "N12";


            g.AgregarNodo(n1);
            g.AgregarNodo(n2);
            g.AgregarNodo(n3);
            g.AgregarNodo(n4);
            g.AgregarNodo(n5);
            g.AgregarNodo(n6);
            g.AgregarNodo(n7);
            g.AgregarNodo(n8);
            g.AgregarNodo(n9);
            g.AgregarNodo(n10);
            g.AgregarNodo(n11);
            g.AgregarNodo(n12);

            this.nodos.Add(n1);
            this.nodos.Add(n2);
            this.nodos.Add(n3);
            this.nodos.Add(n4);
            this.nodos.Add(n5);
            this.nodos.Add(n6);
            this.nodos.Add(n7);
            this.nodos.Add(n8);
            this.nodos.Add(n9);
            this.nodos.Add(n10);
            this.nodos.Add(n11);
            this.nodos.Add(n12);

            var e1 = new EnlaceVisual(2, n1, n2);
            var e2 = new EnlaceVisual(7, n2, n3);
            var e3 = new EnlaceVisual(3, n1, n3);
            var e4 = new EnlaceVisual(20, n1, n6);
            var e5 = new EnlaceVisual(5, n3, n6);
            var e6 = new EnlaceVisual(9, n1, n5);
            var e7 = new EnlaceVisual(3, n5, n4);
            var e8 = new EnlaceVisual(22, n4, n7);
            var e9 = new EnlaceVisual(8, n7, n8);
            var e10 = new EnlaceVisual(1, n9, n10);
            var e11 = new EnlaceVisual(10, n10, n11);
            var e12 = new EnlaceVisual(52, n11, n12);
            var e13 = new EnlaceVisual(19, n12, n7);

            g.AgregarEnlace(e1);
            g.AgregarEnlace(e2);
            g.AgregarEnlace(e3);
            g.AgregarEnlace(e4);
            g.AgregarEnlace(e5);
            g.AgregarEnlace(e6);
            g.AgregarEnlace(e7);
            g.AgregarEnlace(e8);
            g.AgregarEnlace(e9);
            g.AgregarEnlace(e10);
            g.AgregarEnlace(e11);
            g.AgregarEnlace(e12);
            g.AgregarEnlace(e13);

            this.enlaces.Add(e1);
            this.enlaces.Add(e2);
            this.enlaces.Add(e3);
            this.enlaces.Add(e4);
            this.enlaces.Add(e5);
            this.enlaces.Add(e6);
            this.enlaces.Add(e7);
            this.enlaces.Add(e8);
            this.enlaces.Add(e9);
            this.enlaces.Add(e10);
            this.enlaces.Add(e11);
            this.enlaces.Add(e12);
            this.enlaces.Add(e13);

            this.Dibujar();
        }
예제 #8
0
        private void btnGrafo6_Click(object sender, EventArgs e)
        {
            this.Reset();

            var n1 = new NodoVisual();
            n1.Center = new Point(13, 13);
            n1.nombre = "N1";
            var n2 = new NodoVisual();
            n2.Center = new Point(300, 200);
            n2.nombre = "N2";
            var n3 = new NodoVisual();
            n3.Center = new Point(450, 13);
            n3.nombre = "N3";
            var n4 = new NodoVisual();
            n4.Center = new Point(450, 350);
            n4.nombre = "N4";
            var n5 = new NodoVisual();
            n5.Center = new Point(13, 350);
            n5.nombre = "N5";
            var n6 = new NodoVisual();
            n6.Center = new Point(200, 200);
            n6.nombre = "N6";

            g.AgregarNodo(n1);
            g.AgregarNodo(n2);
            g.AgregarNodo(n3);
            g.AgregarNodo(n4);
            g.AgregarNodo(n5);
            g.AgregarNodo(n6);

            this.nodos.Add(n1);
            this.nodos.Add(n2);
            this.nodos.Add(n3);
            this.nodos.Add(n4);
            this.nodos.Add(n5);
            this.nodos.Add(n6);

            var e1 = new EnlaceVisual(2, n1, n2);
            var e2 = new EnlaceVisual(7, n2, n3);
            var e3 = new EnlaceVisual(3, n1, n3);
            var e4 = new EnlaceVisual(20, n1, n6);
            var e5 = new EnlaceVisual(5, n3, n6);
            var e6 = new EnlaceVisual(9, n1, n5);
            var e7 = new EnlaceVisual(3, n5, n4);

            g.AgregarEnlace(e1);
            g.AgregarEnlace(e2);
            g.AgregarEnlace(e3);
            g.AgregarEnlace(e4);
            g.AgregarEnlace(e5);
            g.AgregarEnlace(e6);
            g.AgregarEnlace(e7);

            this.enlaces.Add(e1);
            this.enlaces.Add(e2);
            this.enlaces.Add(e3);
            this.enlaces.Add(e4);
            this.enlaces.Add(e5);
            this.enlaces.Add(e6);
            this.enlaces.Add(e7);

            this.Dibujar();
        }
예제 #9
0
        private void btnGrafo3_Click(object sender, EventArgs e)  // crea grafo de 3 nodos
        {
            this.Reset();
            var n1 = new NodoVisual();
            n1.Center = new Point(13, 13);
            n1.nombre = "N1";
            var n2 = new NodoVisual();
            n2.Center = new Point(300, 200);
            n2.nombre = "N2";
            var n3 = new NodoVisual();
            n3.Center = new Point(450, 13);
            n3.nombre = "N3";

            g.AgregarNodo(n1);
            g.AgregarNodo(n2);
            g.AgregarNodo(n3);

            this.nodos.Add(n1);
            this.nodos.Add(n2);
            this.nodos.Add(n3);

            var e1 = new EnlaceVisual(2, n1, n2);
            var e2 = new EnlaceVisual(7, n2, n3);
            var e3 = new EnlaceVisual(3, n1, n3);

            g.AgregarEnlace(e1);
            g.AgregarEnlace(e2);
            g.AgregarEnlace(e3);

            this.enlaces.Add(e1);
            this.enlaces.Add(e2);
            this.enlaces.Add(e3);

            this.Dibujar();
        }
예제 #10
0
 private void DibujarEnlace(int peso, NodoVisual desde, NodoVisual hasta) // Funcion : Dibujo; Se encarga de trazar una linea entre dos nodos
 {
     Graphics g = prims_kruskal.Principal.K.CreateGraphics();
     Point d = new Point(desde.Center.X + 15, desde.Center.Y + 15);
     Point h = new Point(hasta.Center.X + 15, hasta.Center.Y + 15);
     EnlaceVisual e = new EnlaceVisual(peso, desde, hasta);
     Pen pen = new Pen(pincelNegro, 3); 
     bool selectEnlace = true;
     if (this.enlaces.Count > 0)
     {
         foreach (var Enlace in enlaces)
         {
             if (e.NodoA == Enlace.NodoA && e.NodoB == Enlace.NodoB || e.NodoB == Enlace.NodoA && e.NodoA == Enlace.NodoB)
             {
                 MessageBox.Show("No se puede repetir un enlace ya creado", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                 selectEnlace = false;
             }
         }
     }
     if (e.NodoA == e.NodoB)
     {
         MessageBox.Show("No se puede crear un enlace a si mismo", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
         selectEnlace = false;
     }
     if (selectEnlace)
     {
         enlaces.Add(e);
         g.DrawLine(new Pen(e.Color, 3), d, h);
         g.FillEllipse(pincelVerde, e.Medio.X, e.Medio.Y, 15, 15);
         g.DrawString(e.Peso.ToString(), letra, pincelVerde, e.Medio.X + 3, e.Medio.Y + 15);
         this.g.AgregarEnlace(e);
     }
 }