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