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 AgregaNodo(NodoVisual n) { g.AgregarNodo(n); this.nodos.Add(n); Desde.Items.Add(n.nombre); Hasta.Items.Add(n.nombre); }
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); } }
public object Clone() { var nuevo = new NodoVisual(); nuevo.nombre = this.nombre; nuevo.Center = this.Center; nuevo.heuristica = this.heuristica; nuevo.PosLetra = this.PosLetra; return(nuevo); }
private void Form1_MouseDown(object sender, MouseEventArgs e) //evento: movimiento; genera un cuadrado alrededor del circulo que al tocarlo simula la seleccion del nodo { foreach (NodoVisual n in this.nodos) { if ((n.Center.X <= e.X) && (n.Center.X + 30 >= e.X) && (n.Center.Y <= e.Y) && (n.Center.Y + 30 >= e.Y)) { this.seleccionado = n; } } }
public Principal() // constructor { InitializeComponent(); this.nodos = new List<Nodo>(); // lista de nodos this.enlaces = new List<Enlace>(); this.resolucion = new List<Enlace>(); this.indiceResolucion = 0; K = this; this.seleccionado = null; //inicializa seleccionado en null /////////////////// }
public Principal() // constructor { InitializeComponent(); this.nodos = new List <Nodo>(); // lista de nodos this.enlaces = new List <Enlace>(); this.resolucion = new List <Enlace>(); this.indiceResolucion = 0; //K = this; this.seleccionado = null; //inicializa seleccionado en null /////////////////// }
private void Form1_MouseDown(object sender, MouseEventArgs e) //evento: movimiento; genera un cuadrado alrededor del circulo que al tocarlo simula la seleccion del nodo { if (NodoInserta != null) { AgregaNodo(NodoInserta.Clone() as NodoVisual); NodoInserta = null; Dibujar(true); return; } foreach (NodoVisual n in this.nodos) { if ((n.Center.X <= e.X) && (n.Center.X + TamNodo >= e.X) && (n.Center.Y <= e.Y) && (n.Center.Y + TamNodo >= e.Y)) { if (e.Button == MouseButtons.Left) { this.seleccionado = n; } else { n.SiguientePosicionLetra(); Dibujar(true); } return; } } foreach (EnlaceVisual enl in this.enlaces) { if ((enl.CurMedio.X <= e.X) && (enl.CurMedio.X + TamNodo / 2 >= e.X) && (enl.CurMedio.Y <= e.Y) && (enl.CurMedio.Y + TamNodo / 2 >= e.Y)) { if (e.Button == MouseButtons.Right) { enl.SiguientePosicionLetra(); Dibujar(true); } else if (e.Button == MouseButtons.Left) { this.Desde.Text = enl.NodoA.nombre; this.Hasta.Text = enl.NodoB.nombre; this.numPeso.Value = enl.Peso; } return; } } }
private void btnDibujarNodo_Click(object sender, EventArgs e) // Funcion: recibe los valores para dibijar el nodo, crea un nuevo punto y un nuevo nodo y llama a la funcion para dibujar { if (this.textBox3.Text != "" && this.textBox4.Text != "") { NodoVisual n = new NodoVisual(); int x, y = 0; x = int.Parse(this.textBox3.Text); y = int.Parse(this.textBox4.Text); Point p = new Point(x, y); n.Center = p; n.nombre = this.textBox1.Text; bool selectNodo = true; if (this.nodos.Count > 0) { foreach (var Nodo in nodos) { if (n.nombre == Nodo.nombre) { MessageBox.Show("No se puede repetir el nombre de un Nodo", "", MessageBoxButtons.OK, MessageBoxIcon.Error); selectNodo = false; } } } if (selectNodo) { this.nodos.Add(n); this.g.AgregarNodo((Nodo)n); this.Dibujar(); this.textBox1.Text = string.Empty; this.textBox3.Text = string.Empty; this.textBox4.Text = string.Empty; } } else { MessageBox.Show("Debe completar los campor X, Y!", "", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void btnDibujarNodo_Click(object sender, EventArgs e) // Funcion: recibe los valores para dibijar el nodo, crea un nuevo punto y un nuevo nodo y llama a la funcion para dibujar { NodoVisual n = new NodoVisual(); if (string.IsNullOrWhiteSpace(this.textBox1.Text)) { MessageBox.Show("El nombre no puede ser blanco", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } n.nombre = this.textBox1.Text.Trim(); n.heuristica = (int)this.numHeu.Value; foreach (var nodo in nodos) { if (n.nombre == nodo.nombre) { MessageBox.Show("No se puede repetir el nombre de un Nodo", "", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } NodoInserta = n; }
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 Form1_MouseUp(object sender, MouseEventArgs e)// evento: movimiento; suelta el nodo cuando soltas el click del mouse { this.seleccionado = null; }
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 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(); }
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(); }