Esempio n. 1
0
        public Form1()
        {
            InitializeComponent();
            this.WindowState = FormWindowState.Maximized;
            imagePrincp      = new Bitmap(1409, 537);
            imagePrincipal   = imagePrincp;

            pontAtual         = new Ponto();
            pontAtual.XInicio = -99999.0;
            pontAtual.XFinal  = -1.0;

            cbOpcoesLinha.SelectedIndex      = 0;
            cbFormaSelecionada.SelectedIndex = 2;
            cbOpcoesCirculos.SelectedIndex   = 0;

            imagens    = new PilhaRedo();
            poligAtual = null;
            inicial    = null;
            atual      = null;
            picBoxPrincp.Focus();
            resetaPontos();
            listPoli             = new List <Poligono>();
            ultimoselecionado    = 0;
            pintar               = false;
            ckFlooddFill.Enabled = false;
            ckScanLine.Enabled   = false;
            txX.Text             = "" + 100;
            txY.Text             = "" + 100;
        }
 public NoRedo(Ponto info, NoRedo prox, string metodo, Poligono poligon)
 {
     this.info    = info;
     this.prox    = prox;
     this.metodo  = metodo;
     this.Poligon = poligon;
 }
Esempio n. 3
0
        private void PicBoxPrincp_MouseClick(object sender, MouseEventArgs e)
        {
            if (!pintar)
            {
                if (cbFormaSelecionada.SelectedIndex == 3)
                {
                    if (poligAtual == null)
                    {
                        poligAtual = new Poligono();

                        imagens.inserir(poligAtual, "POLIGONO");
                    }

                    criaPoligono(e);
                }
                else
                {
                    if (pontAtual.XInicio == -99999.0)
                    {
                        pontAtual.XInicio = e.X;
                        pontAtual.YInicio = e.Y;
                    }
                    else if (pontAtual.XFinal == -1.0)
                    {
                        pontAtual.XFinal = e.X;
                        pontAtual.YFinal = e.Y;

                        chamaCriaFormas2();
                    }

                    picBoxPrincp.Focus();
                }
            }
            else
            {
                if (listPoli.Count > 0)
                {
                    if (ckFlooddFill.Checked)
                    {
                        listPoli[(listPoli.Count - 1) - cbPoligonos.SelectedIndex].floodFill((int)e.X, (int)e.Y, imagePrincp);
                        picBoxPrincp.Image = imagePrincp;
                    }
                    else if (ckScanLine.Checked)
                    {
                        listPoli[(listPoli.Count - 1) - cbPoligonos.SelectedIndex].carregaListaET(imagePrincp);
                        picBoxPrincp.Image = imagePrincp;
                    }
                }
            }
        }
Esempio n. 4
0
        private void recriaPoligonoViewPort(Poligono aux)
        {
            for (int i = 0; i < aux.PontosViewPort.Count; i++)
            {
                if (i >= 1)
                {
                    pontAtual.transferePonto2(aux.PontosViewPort[i - 1], aux.PontosViewPort[i]);

                    chamaCriaFormas("VIEWPORT", pontAtual);
                }
            }

            pontAtual.transferePonto2(aux.PontosViewPort[aux.PontosViewPort.Count - 1], aux.PontosViewPort[0]);

            chamaCriaFormas("VIEWPORT", pontAtual);
        }
Esempio n. 5
0
        private void recriaPoligono(Poligono aux)
        {
            for (int i = 0; i < aux.PontosAtuais.Count; i++)
            {
                if (i >= 1)
                {
                    pontAtual.transferePonto2(aux.PontosAtuais[i - 1], aux.PontosAtuais[i]);

                    chamaCriaFormas("DDA", pontAtual);
                }
            }

            pontAtual.transferePonto2(aux.PontosAtuais[aux.PontosAtuais.Count - 1], aux.PontosAtuais[0]);

            chamaCriaFormas("DDA", pontAtual);
        }
Esempio n. 6
0
 public void inicializarPolig()
 {
     poligAtual = null;
     atual      = null;
     inicial    = null;
 }
Esempio n. 7
0
        private void aplicaTransformacoes(Poligono poli)
        {
            Ponto2 pontRotacao = new Ponto2();
            double transX, transY;
            double escalaX, escalaY;
            double angulo;
            double cisaX, cisaY;
            double refleX, refleY;

            pontRotacao.X = 0;
            pontRotacao.Y = 0;


            if (rbCentro.Checked)
            {
                pontRotacao.X = poli.retornaCX();
                pontRotacao.Y = poli.retornaCY();
            }

            try
            {
                transX = double.Parse(txXtrans.Text);
                transY = double.Parse(txYtrans.Text);
            }
            catch (Exception e) { transX = 0.0; transY = 0.0; }

            try
            {
                escalaX = double.Parse(txXescala.Text);
                escalaY = double.Parse(txYescala.Text);
            }
            catch (Exception e) { escalaX = 1; escalaY = 1; }

            try
            {
                angulo = double.Parse(txAngulo.Text);
            }
            catch (Exception e) { angulo = 0.0; }

            try
            {
                cisaX = double.Parse(txShearX.Text);
            }
            catch (Exception e) { cisaX = 0.0; };

            try
            {
                cisaY = double.Parse(txShearY.Text);
            }
            catch (Exception e) { cisaY = 0.0; };

            try
            {
                refleX = double.Parse(txReflexaoX.Text);
            }
            catch (Exception e) { refleX = 0; };

            try
            {
                refleY = double.Parse(txReflexaoY.Text);
            }
            catch (Exception e) { refleY = 0; };

            poli.inicializarMatriz();

            if (refleX != 0)
            {
                poli.reflexaoX(refleX);
            }

            if (refleY != 0)
            {
                poli.reflexaoY(refleY);
            }

            if (cisaX != 0 || cisaY != 0)
            {
                poli.shearXY(cisaX, cisaY);
            }



            if (angulo != 0)
            {
                if (pontRotacao.X == 0 && pontRotacao.Y == 0)
                {
                    poli.rotacao(angulo);
                }
                else
                {
                    poli.rotacao(angulo, pontRotacao.X, pontRotacao.Y);
                }
            }


            if (escalaX != 0 || escalaY != 0)
            {
                escalaY = escalaY == 0 ? 1 : escalaY;
                escalaX = escalaX == 0 ? 1 : escalaX;
                if (pontRotacao.X == 0 && pontRotacao.Y == 0)
                {
                    poli.escala(escalaX, escalaY);
                }
                else
                {
                    poli.escala(escalaX, escalaY, pontRotacao.X, pontRotacao.Y);
                }
            }

            if (transX != 0 || transY != 0)
            {
                poli.translacao(transX, transY);
            }

            poli.aplicarMA();
        }