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); } }
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); } }
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(); }
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; } } }
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(); }
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(); }