Example #1
0
        private void ReexibePoligono()
        {
            pontos.Clear();
            ClearTelaPoligono();
            Poligono poli = Lpoli.Find(x => x.Rotulo == ((Poligono)CbPolignos.SelectedItem).Rotulo);

            foreach (Point p in poli.pontosAtuais)
            {
                dgvPontos.Rows.Add(p.X.ToString());
                dgvPontos.Rows[dgvPontos.Rows.Count - 1].Cells[0].Value = p.X.ToString();
                dgvPontos.Rows[dgvPontos.Rows.Count - 1].Cells[1].Value = p.Y.ToString();

                pontos.Add(p);
                if (pontos.Count == 2)
                {
                    Primitivas.DecliveDDA(pontos[0], pontos[1], pbxPoligonos);
                    pontos[0] = pontos[1];
                    pontos.RemoveAt(1);
                }
            }
            if (poli.Fechado == true) //Se o poligono estiver completo, a ligação do Pi com Pf é feita
            {
                Primitivas.DecliveDDA(poli.pontosAtuais[0], poli.pontosAtuais[poli.pontosAtuais.Count - 1], pbxPoligonos);
            }
        }
Example #2
0
        //INTERFACE PRIMITIVAS GRÁFICAS
        private void PbxRetas_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                pontos.Add(new Point(e.X, e.Y));
                if (pontos.Count == 2)
                {
                    if (RbRetaReal.Checked)
                    {
                        Primitivas.EQgeral(pontos[0], pontos[1], pbxRetas);
                    }
                    else if (RbRetaDDA.Checked)
                    {
                        Primitivas.DecliveDDA(pontos[0], pontos[1], pbxRetas);
                    }
                    else if (RbRetaBresenhan.Checked)
                    {
                        Primitivas.Bresenhan(pontos[0], pontos[1], pbxRetas);
                    }

                    else if (RbCircReal.Checked)
                    {
                        double raio = Math.Sqrt(Math.Pow(pontos[1].X - pontos[0].X, 2) + Math.Pow(pontos[1].Y - pontos[0].Y, 2));
                        Primitivas.CircGeral(pontos[0], pbxRetas, raio);
                    }
                    else if (RbCircTrig.Checked)
                    {
                        double raio = Math.Sqrt(Math.Pow(pontos[1].X - pontos[0].X, 2) + Math.Pow(pontos[1].Y - pontos[0].Y, 2));
                        Primitivas.CircTrig(pontos[0], pbxRetas, raio);
                    }
                    else if (RbCircPtMedio.Checked)
                    {
                        double raio = Math.Sqrt(Math.Pow(pontos[1].X - pontos[0].X, 2) + Math.Pow(pontos[1].Y - pontos[0].Y, 2));
                        Primitivas.PontoMedio(pontos[0], pbxRetas, raio);
                    }
                    else if (RbElipMédio.Checked)
                    {
                        Primitivas.Elipse(pontos[0], pontos[1], pbxRetas);
                    }
                    pontos.Clear();
                }
            }
        }
Example #3
0
        //INTERFACE POLIGONOS
        private void PbxPoligonos_MouseClick(object sender, MouseEventArgs e)
        {
            if (CbPolignos.SelectedIndex > -1 && ((Poligono)CbPolignos.SelectedItem).Fechado == false)
            {
                if (e.Button == MouseButtons.Left)
                {
                    pontos.Add(e.Location);

                    int pos = Lpoli.FindIndex(x => x.Rotulo == ((Poligono)CbPolignos.SelectedItem).Rotulo); //Busca a posição do poli selecionado na lista de polis
                    Lpoli[pos].AddPonto(e.Location);                                                        //add o ponto dentro do obj poligono
                    dgvPontos.Rows.Add(e.X.ToString());
                    dgvPontos.Rows[dgvPontos.Rows.Count - 1].Cells[0].Value = e.X.ToString();
                    dgvPontos.Rows[dgvPontos.Rows.Count - 1].Cells[1].Value = e.Y.ToString();
                }
                else if (e.Button == MouseButtons.Right)
                {
                    pontos.Add(e.Location);

                    int pos = Lpoli.FindIndex(x => x.Rotulo == ((Poligono)CbPolignos.SelectedItem).Rotulo); //Busca a posição do poli selecionado na lista de polis
                    Lpoli[pos].AddPonto(e.Location);                                                        //add o ponto dentro do obj poligono
                    dgvPontos.Rows.Add(e.X.ToString());
                    dgvPontos.Rows[dgvPontos.Rows.Count - 1].Cells[0].Value = e.X.ToString();
                    dgvPontos.Rows[dgvPontos.Rows.Count - 1].Cells[1].Value = e.Y.ToString();

                    Primitivas.DecliveDDA(e.Location, Lpoli[pos].Pontos[0], pbxPoligonos);
                    ((Poligono)CbPolignos.SelectedItem).Fechado      = true;
                    ((Poligono)CbPolignos.SelectedItem).pontosAtuais = ((Poligono)CbPolignos.SelectedItem).pontos;
                }

                if (pontos.Count == 2)
                {
                    Primitivas.DecliveDDA(pontos[0], pontos[1], pbxPoligonos);
                    pontos[0] = pontos[1]; //O ultimo ponto se transforma em um novo inicial
                    pontos.RemoveAt(1);
                }
            }

            if (cbFloodFill.Checked && e.Button == MouseButtons.Left)
            {
                ((Poligono)CbPolignos.SelectedItem).floodFill(pbxPoligonos, e.X, e.Y);
            }
        }