public override MyRectangle GenerarRectanguloAsociado() { var Xs = from punto in puntos select punto.X; var Ys = from punto in puntos select punto.Y; var Xminima = Xs.Min(); var Yminima = Ys.Min(); var puntosfinales = from punto in puntos select new PointF(punto.X - Xminima, punto.Y - Yminima); var XsNuevos = from punto in puntosfinales select punto.X; var YsNuevos = from punto in puntosfinales select punto.Y; var rectwidth = XsNuevos.Max(); var rectheight = YsNuevos.Max(); var nuevoPoligono = new Poligono(puntosfinales.ToList()); nuevoPoligono.color = this.color; var rectangulo = new MyRectangle(rectwidth, rectheight, nuevoPoligono); return(rectangulo); }
private void Button2_Click(object sender, EventArgs e) { var nombre = textBox1.Text; if (modo == Modo.Poligono) { var copia = new List <PointF>(); foreach (var p in puntos) { copia.Add(p); } diccionariofiguras[nombre] = new Poligono(copia) { color = this.color, Name = nombre }; } else if (modo == Modo.Elipse) { var copia = new List <PointF>(); foreach (var p in puntos) { copia.Add(p); } diccionariofiguras[nombre] = new Elipse(copia) { color = this.color, Name = nombre }; } else if (modo == Modo.Regular) { var copia = new List <PointF>(); foreach (var p in puntosF) { copia.Add(p); } diccionariofiguras[nombre] = new Regular() { puntos = copia, color = this.color, radio = (double)numericUpDown2.Value, Name = nombre }; } else if (modo == Modo.Conjunto) { diccionariofiguras[nombre] = new Conjunto(figurasadibujar) { Name = nombre }; } if (!listBox1.Items.Contains(nombre)) { listBox1.Items.Add(nombre); } listBox1.Refresh(); textBox1.Text = $"Fig{diccionariofiguras.Count + 1}"; Refresh(); }
private void PictureBox2_Paint(object sender, PaintEventArgs e) { if (elementolistBox != null && diccionariofiguras.ContainsKey(elementolistBox)) { e.Graphics.Clear(Color.White); var figura = diccionariofiguras[elementolistBox]; if (figura.modo == Modo.Poligono) { var poligono = figura as Poligono; var puntospequenos = TransformaEscalaAPequeña(poligono.puntos); PintarPolígono(puntospequenos, e, figura.color); } else if (figura.modo == Modo.Elipse) { var elipse = figura as Elipse; var puntospequenos = TransformaEscalaAPequeña(elipse.puntos); PintarElipse(puntospequenos, e, figura.color); } else if (figura.modo == Modo.Regular) { var elipse = figura as Regular; var puntospequenos = TransformaEscalaAPequeña(elipse.puntos); PintarRegular(puntospequenos, e, figura.color); } else { var conjunto = figura as Conjunto; var conjunto2 = new List <FiguraDibujable>(); for (int i = 0; i < conjunto.figuras.Count; i++) { var fig = conjunto.figuras[i] as FiguraDibujable; var puntospequeños = TransformaEscalaAPequeña(fig.puntos); FiguraDibujable fig2; if (fig is Elipse) { fig2 = new Elipse(puntospequeños); } else if (fig is Poligono) { fig2 = new Poligono(puntospequeños); } else { fig2 = new Regular(puntospequeños); } fig2.color = fig.color; conjunto2.Add(fig2); } List <MyRectangle> rectangulos = new List <MyRectangle>(); foreach (var fig in conjunto2) { if (fig is FiguraDibujable) { var dibujable = (FiguraDibujable)fig; var rectangulo = dibujable.GenerarRectanguloAsociado(); rectangulos.Add(rectangulo); } } var sk = new Skyline(pictureBox2.Size.Width, pictureBox2.Height); var result = sk.Run(rectangulos); if (result.Item1) { var varios = new Conjunto(result.Item2); figurasadibujar2 = varios.figuras; PintarVarias(varios.figuras, e); } return; } } }