private void Form1_MouseMove(object sender, MouseEventArgs e) { if (M == true && NodoMovimiento != null) { NodoMovimiento.AsignarCoordenadas(e.X, e.Y); Form1_Paint(this, null); } else if (R == true && NodoInicio != null) { NodoDestino = BuscaNodo(e); if (NodoDestino != null && NodoDestino.Identificador != NodoInicio.Identificador) { if (grafo.Dirigido == false) { NodoInicio.AñadirRelacion(NodoDestino.Identificador, 0); NodoDestino.AñadirRelacion(NodoInicio.Identificador, 0); } else { NodoInicio.AñadirRelacion(NodoDestino.Identificador, 0); } Form1_Paint(this, null); R = false; } XRel = e.X; YRel = e.Y; Form1_Paint(this, null); } }
private void cargaGrafo() { string[] CadenaInformacion; OpenFileDialog VentanaAbrir = new OpenFileDialog(); VentanaAbrir.Filter = "Grafo (*.gfo)|*.gfo"; if (VentanaAbrir.ShowDialog() == DialogResult.OK) { using (StreamReader Lector = new StreamReader(VentanaAbrir.FileName)) { while (!Lector.EndOfStream) { string Aux = Lector.ReadLine(); CadenaInformacion = Aux.Split('/'); if (Aux[0] == 'N') { Nodo NuevoNodo = new Nodo(); NuevoNodo.Identificador = Convert.ToInt32(CadenaInformacion[1]); NuevoNodo.AsignarCoordenadas(Convert.ToInt32(CadenaInformacion[2]), Convert.ToInt32(CadenaInformacion[3])); grafo.Nodos.Add(NuevoNodo); } else if (Aux[0] == 'R') { Nodo AuxNodo = BuscaNodoInt(Convert.ToInt32(CadenaInformacion[1])); Arco Relacion = new Arco(); AuxNodo.AñadirRelacion(Convert.ToInt32(CadenaInformacion[2]), Convert.ToInt32(CadenaInformacion[3])); } } Form2_Paint(this, null); } } }
private void Form1_MouseDown(object sender, MouseEventArgs e) { switch (TipoOperacion) { case -1: NodoMovimiento = BuscaNodo(e); if (NodoMovimiento != null) { M = true; } break; case 0: Identificador++; Nodo Aux = new Nodo(); Aux.AsignarCoordenadas(e.X, e.Y); Aux.Identificador = Identificador; grafo.AgregarNodo(Aux); Form1_Paint(this, null); break; case 1: Nodo aux = BuscaNodo(e); if (aux != null) { if (MessageBox.Show("Estas seguro de eliminar el nodo : " + aux.Identificador + " ?", "Eliminar nodo", MessageBoxButtons.YesNo) == DialogResult.Yes) { grafo.EliminarNodo(aux); Form1_Paint(this, null); Identificador--; } } break; case 2: // Agregar Relación NodoInicio = BuscaNodo(e); if (NodoInicio != null) { R = true; } break; case 3: // Mover Nodo NodoMovimiento = BuscaNodo(e); M = true; break; case 4: Arco Relacion = BuscaRelacion(e); if (Relacion != null) { if (grafo.Dirigido == true) { grafo.EliminaRelacion(BuscaNodoInt(Relacion.Origen), BuscaNodoInt(Relacion.Destino)); } else { if (Relacion.Origen != Relacion.Destino) { grafo.EliminaRelacion(BuscaNodoInt(Relacion.Origen), BuscaNodoInt(Relacion.Destino)); Arco RelAux = BuscaRelacionNodo(BuscaNodoInt(Relacion.Destino), Relacion.Origen); grafo.EliminaRelacion(BuscaNodoInt(RelAux.Origen), BuscaNodoInt(RelAux.Destino)); } else { grafo.EliminaRelacion(BuscaNodoInt(Relacion.Origen), BuscaNodoInt(Relacion.Destino)); } } Form1_Paint(this, null); } break; case 5: Arco RelacionPeso = BuscaRelacion(e); if (RelacionPeso != null) { int Peso = Convert.ToInt32(Interaction.InputBox("Ingresa el nuevo peso de la relación: " + RelacionPeso.Origen + " - " + RelacionPeso.Destino)); if (grafo.Dirigido == true) { RelacionPeso.Peso = Peso; } else { Arco RelacionAuxiliarPeso = BuscaRelacionNodo(BuscaNodoInt(RelacionPeso.Destino), RelacionPeso.Origen); RelacionPeso.Peso = Peso; RelacionAuxiliarPeso.Peso = Peso; } } break; case 6: Nodo NodoAux = BuscaNodo(e); if (NodoAux != null) { MessageBox.Show("El grado de salida del nodo es: " + NodoAux.ObtenGradoNodo().ToString() + "\n" + "El grado de entrada del nodo es: " + grafo.ObtenGradoEntradaNodo(NodoAux)); } break; case 7: if (!banderaCamino) { if (BuscaNodo(e) != null) { NodoCamino1 = BuscaNodo(e).Identificador; LB_NodosSeleccionados.Text = "Nodo Seleccionado:\n" + NodoCamino1; banderaCamino = true; break; } } if (banderaCamino) { if (BuscaNodo(e) != null) { NodoCamino2 = BuscaNodo(e).Identificador; banderaCamino = false; LB_NodosSeleccionados.Text = "Nodos Seleccionados:\n\t\t" + "{" + NodoCamino1 + " , " + NodoCamino2 + "}"; TipoOperacion = -1; break; } } break; } }