예제 #1
0
        private void Button7_Click(object sender, EventArgs e)
        {
            radioButton4.Enabled = true;
            radioButton4.Checked = true;
            radioButton1.Checked = radioButton2.Checked = radioButton3.Checked = false;
            modo = Modo.Conjunto;

            List <MyRectangle> rectangulos = new List <MyRectangle>();

            foreach (var elemento in listBox2.Items)
            {
                var figura = diccionariofiguras[elemento.ToString()];
                if (figura is FiguraDibujable)
                {
                    var dibujable  = (FiguraDibujable)figura;
                    var rectangulo = dibujable.GenerarRectanguloAsociado();
                    rectangulos.Add(rectangulo);
                }
                if (figura is Conjunto)
                {
                    var conj = (Conjunto)figura;
                    foreach (FiguraDibujable fig in conj.figuras)
                    {
                        var dibujable  = (FiguraDibujable)fig;
                        var rectangulo = dibujable.GenerarRectanguloAsociado();
                        rectangulos.Add(rectangulo);
                    }
                }
            }

            var sk     = new Skyline(pictureBox1.Size.Width, pictureBox1.Height);
            var result = sk.Run(rectangulos);

            if (result.Item1)
            {
                var varios = new Conjunto(result.Item2);
                figurasadibujar = varios.figuras;
                pictureBox1.Refresh();
            }
            else
            {
                figurasadibujar = new List <Figura>();
                pictureBox1.Refresh();
            }
            return;
        }
예제 #2
0
        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;
                }
            }
        }