private void Pizarra_MouseMove(object sender, MouseEventArgs e) { switch (var_control) { case 2: //Creando nuevo nodo if (nuevoNodo != null) { int posX = e.Location.X; int posY = e.Location.Y; if (posX < nuevoNodo.Dimensiones.Width / 2) { posX = nuevoNodo.Dimensiones.Width / 2; } else if (posX > Pizarra.Size.Width - nuevoNodo.Dimensiones.Width / 2) { posX = Pizarra.Size.Width - nuevoNodo.Dimensiones.Width / 2; } if (posY < nuevoNodo.Dimensiones.Height / 2) { posY = nuevoNodo.Dimensiones.Height / 2; } else if (posY > Pizarra.Size.Height - nuevoNodo.Dimensiones.Height / 2) { posY = Pizarra.Size.Height - nuevoNodo.Dimensiones.Height / 2; } nuevoNodo.Posicion = new Point(posX, posY); Pizarra.Refresh(); nuevoNodo.DibujarVertice(Pizarra.CreateGraphics()); } break; case 1: //Dibujar arco AdjustableArrowCap bigArrow = new AdjustableArrowCap(4, 4, true); bigArrow.BaseCap = System.Drawing.Drawing2D.LineCap.Triangle; Pizarra.Refresh(); Pizarra.CreateGraphics().DrawLine ( new Pen(Brushes.Black, 2) { CustomEndCap = bigArrow }, NodoOrigen.Posicion, e.Location ); break; } }
private void nuevoVerticeToolStripMenuItem_Click(object sender, EventArgs e) { int posX = 200; int offsetY = Pizarra.Height / 5; int posY = 0; for (int i = 0; i < ListaNodos.Grafo.Count; i++) { nuevoNodo = new Cvertice(); nuevoNodo.Valor = ListaNodos.Grafo[i].Nombre; grafo.AgregarVertice(nuevoNodo); if (i == 0) { nuevoNodo.Posicion = new Point(30, Pizarra.Height / 2); } else { posY += offsetY; if (posY >= Pizarra.Height - offsetY) { posX += 120; posY = offsetY; } nuevoNodo.Posicion = new Point(posX, posY); } Pizarra.Refresh(); nuevoNodo.DibujarVertice(Pizarra.CreateGraphics()); } foreach (Nodo nodo in ListaNodos.Grafo) { foreach (Arista arista in nodo.Aristas) { NodoOrigen = BuscaNodo(arista.partida.Nombre); NodoDestino = BuscaNodo(arista.destino.Nombre); if (grafo.AgregarArco(NodoOrigen, NodoDestino)) { int distancia = arista.peso; NodoOrigen.ListaAdyacencia.Find(v => v.nDestino == NodoDestino).peso = distancia; } } } flag = true; Pizarra.Refresh(); }