private void dibujarSemaforo(Graphics grafico, Semaforo semaforo) { int x = (int)semaforo.X; int y = (int)semaforo.Y; Color luzVerde = Color.Gray; Color luzAmarilla = Color.Gray; Color luzRoja = Color.Gray; Color colorFondo = Color.Black; if(Modificar.eliminarSeñaleticas && Modificar.estaSobre(semaforo)) { colorFondo = Configuracion.COLORRESALTAR; luzVerde = Color.White; luzAmarilla = Color.White; luzRoja = Color.White; } if (semaforo.EstadoLuzVerde) luzVerde = Color.Green; else if (semaforo.EstadoLuzAmarilla) luzAmarilla = Color.Yellow; else if (semaforo.EstadoLuzRoja) luzRoja = Color.Red; Color color1 = luzRoja; Color color2 = luzVerde; int diferencia = 1; if (semaforo.Orientacion == Elemento.NORTE || semaforo.Orientacion == Elemento.OESTE) { color1 = luzVerde; color2 = luzRoja; diferencia = 20; } if (semaforo.Orientacion == Elemento.NORTE) { if (semaforo.Carril == Elemento.CARRIL1 || semaforo.Carril == Elemento.CARRIL1Y2) { grafico.FillRectangle (new SolidBrush (colorFondo), x + 32, y - 20, 8, 20); grafico.FillRectangle (new SolidBrush (color1), x + 34, y - 18, 4, 4); grafico.FillRectangle (new SolidBrush (luzAmarilla), x + 34, y - 12, 4, 4); grafico.FillRectangle (new SolidBrush (color2), x + 34, y - 6, 4, 4); } if (semaforo.Carril == Elemento.CARRIL2 || semaforo.Carril == Elemento.CARRIL1Y2) { grafico.FillRectangle (new SolidBrush (colorFondo), x - 4, y - 20, 8, 20); grafico.FillRectangle (new SolidBrush (color1), x - 2, y - 18, 4, 4); grafico.FillRectangle (new SolidBrush (luzAmarilla), x - 2, y - 12, 4, 4); grafico.FillRectangle (new SolidBrush (color2), x - 2, y - 6, 4, 4); } } else if (semaforo.Orientacion == Elemento.SUR) { if (semaforo.Carril == Elemento.CARRIL1 || semaforo.Carril == Elemento.CARRIL1Y2) { grafico.FillRectangle (new SolidBrush (colorFondo), x - 4, y - 1, 8, 20); grafico.FillRectangle (new SolidBrush (color1), x - 2, y + 1, 4, 4); grafico.FillRectangle (new SolidBrush (luzAmarilla), x - 2, y + 7, 4, 4); grafico.FillRectangle (new SolidBrush (color2), x - 2, y + 13, 4, 4); } if (semaforo.Carril == Elemento.CARRIL2 || semaforo.Carril == Elemento.CARRIL1Y2) { grafico.FillRectangle (new SolidBrush (colorFondo), x - 40, y - 1, 8, 20); grafico.FillRectangle (new SolidBrush (color1), x - 38, y + 1, 4, 4); grafico.FillRectangle (new SolidBrush (luzAmarilla), x - 38, y + 7, 4, 4); grafico.FillRectangle (new SolidBrush (color2), x - 38, y + 13, 4, 4); } } else if (semaforo.Orientacion == Elemento.ESTE) { if (semaforo.Carril == Elemento.CARRIL1 || semaforo.Carril == Elemento.CARRIL1Y2) { grafico.FillRectangle (new SolidBrush (colorFondo), x - 1, y - 4, 20, 8); grafico.FillRectangle (new SolidBrush (color1), x + 1, y - 2, 4, 4); grafico.FillRectangle (new SolidBrush (luzAmarilla), x + 7, y - 2, 4, 4); grafico.FillRectangle (new SolidBrush (color2), x + 13, y - 2, 4, 4); } if (semaforo.Carril == Elemento.CARRIL2 || semaforo.Carril == Elemento.CARRIL1Y2) { grafico.FillRectangle (new SolidBrush (colorFondo), x - 1, y + 32, 20, 8); grafico.FillRectangle (new SolidBrush (color1), x + 1, y + 34, 4, 4); grafico.FillRectangle (new SolidBrush (luzAmarilla), x + 7, y + 34, 4, 4); grafico.FillRectangle (new SolidBrush (color2), x + 13, y + 34, 4, 4); } } else if (semaforo.Orientacion == Elemento.OESTE) { if (semaforo.Carril == Elemento.CARRIL1 || semaforo.Carril == Elemento.CARRIL1Y2) { grafico.FillRectangle (new SolidBrush (colorFondo), x - 20, y - 40, 20, 8); grafico.FillRectangle (new SolidBrush (color1), x - 18, y - 38, 4, 4); grafico.FillRectangle (new SolidBrush (luzAmarilla), x - 12, y - 38, 4, 4); grafico.FillRectangle (new SolidBrush (color2), x - 6, y - 38, 4, 4); } if (semaforo.Carril == Elemento.CARRIL2 || semaforo.Carril == Elemento.CARRIL1Y2) { grafico.FillRectangle (new SolidBrush (colorFondo), x - 20, y - 4, 20, 8); grafico.FillRectangle (new SolidBrush (color1), x - 18, y - 2, 4, 4); grafico.FillRectangle (new SolidBrush (luzAmarilla), x - 12, y - 2, 4, 4); grafico.FillRectangle (new SolidBrush (color2), x - 6, y - 2, 4, 4); } } if (semaforo.obtenerOrientacionSimple () == Elemento.VERTICAL) { if (semaforo.Carril == Elemento.CARRIL1) this.dibujarID (grafico, semaforo.Id, Elemento.HORIZONTAL, x + 25, y + 28 - diferencia); else if (semaforo.Carril == Elemento.CARRIL2) this.dibujarID (grafico, semaforo.Id, Elemento.HORIZONTAL, x - 15, y + 28 - diferencia); else if (semaforo.Carril == Elemento.CARRIL1Y2) this.dibujarID (grafico, semaforo.Id, Elemento.HORIZONTAL, x + 3, y + 18 - diferencia); } else if (semaforo.obtenerOrientacionSimple () == Elemento.HORIZONTAL) { if (semaforo.Carril == Elemento.CARRIL1) this.dibujarID (grafico, semaforo.Id, Elemento.HORIZONTAL, x + 25 - diferencia, y - 5); else if (semaforo.Carril == Elemento.CARRIL2) this.dibujarID (grafico, semaforo.Id, Elemento.HORIZONTAL, x + 25 - diferencia, y + 32); else if (semaforo.Carril == Elemento.CARRIL1Y2) this.dibujarID (grafico, semaforo.Id, Elemento.HORIZONTAL, x - diferencia, y + 14); } }
public static bool estaSobre(Semaforo elemento) { int x1 = (int)elemento.X; int y1 = (int)elemento.Y; int x2 = (int)elemento.X; int y2 = (int)elemento.Y; int xR = Modificar.posX; int yR = Modificar.posY; int ancho = 8; int largo = 20; int diferencia = 0; int diferencia2 = 0; int diferencia3 = 0; if (elemento.Orientacion == Elemento.NORTE || elemento.Orientacion == Elemento.OESTE) { diferencia = 20; } if (elemento.Orientacion == Elemento.OESTE) { diferencia2 = 36; } if (elemento.Orientacion == Elemento.SUR) { diferencia3 = 36; } if (elemento.obtenerOrientacionSimple () == Elemento.VERTICAL && (elemento.Carril == Elemento.CARRIL1 || elemento.Carril == Elemento.CARRIL1Y2)) { x1 += 32-diferencia3; y1 -= diferencia-diferencia2; } else if (elemento.obtenerOrientacionSimple () == Elemento.HORIZONTAL && (elemento.Carril == Elemento.CARRIL1 || elemento.Carril == Elemento.CARRIL1Y2)) { x1 -= diferencia-diferencia3; y1 -= 4+diferencia2; ancho = 20; largo = 8; } else { x1 = -5000; y1 = -5000; } if (elemento.obtenerOrientacionSimple () == Elemento.VERTICAL && (elemento.Carril == Elemento.CARRIL2 || elemento.Carril == Elemento.CARRIL1Y2)) { x2 -= 4+diferencia3; y2 -= diferencia-diferencia2; } else if (elemento.obtenerOrientacionSimple () == Elemento.HORIZONTAL && (elemento.Carril == Elemento.CARRIL2 || elemento.Carril == Elemento.CARRIL1Y2)) { x2 -= diferencia-diferencia3; y2 += 32-diferencia2; ancho = 20; largo = 8; } else { x2 = -5000; y2 = -5000; } if ((xR >= x1 && xR <= x1 + ancho && yR >= y1 && yR <= y1 + largo) || (xR >= x2 && xR <= x2 + ancho && yR >= y2 && yR <= y2 + largo)) { idElementoEliminar = elemento.Id; return true; } if (idElementoEliminar == elemento.Id) idElementoEliminar = -1; return false; }