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); } }
private void BtNovoPoligno_Click(object sender, EventArgs e) { pontos.Clear(); Poligono p = new Poligono(CountPoli++); Lpoli.Add(p); CbPolignos.Items.Add(p); CbPolignos.SelectedIndex = CbPolignos.Items.Count - 1; ClearTelaPoligono(); }
private void BtEspY_Click(object sender, EventArgs e) { Poligono pTemp = ((Poligono)CbPolignos.SelectedItem); double Mx = 0, My = 0; for (int i = 0; i < pTemp.pontos.Count; i++) { Mx += pTemp.pontos[i].X; My += pTemp.pontos[i].Y; } Mx = Mx / pTemp.pontos.Count; My = My / pTemp.pontos.Count; ((Poligono)CbPolignos.SelectedItem).espelhamentoY(new Point((int)Mx, (int)My)); ReexibePoligono(); }
private void BtRotacao_Click(object sender, EventArgs e) { if (rbOrigem.Checked) { ((Poligono)CbPolignos.SelectedItem).Rotacao(double.Parse(tbRotacao.Text), new Point(0, 0), 'o'); } else { Poligono pTemp = ((Poligono)CbPolignos.SelectedItem); double Mx = 0, My = 0; for (int i = 0; i < pTemp.pontos.Count; i++) { Mx += pTemp.pontos[i].X; My += pTemp.pontos[i].Y; } Mx = Mx / pTemp.pontos.Count; My = My / pTemp.pontos.Count; ((Poligono)CbPolignos.SelectedItem).Rotacao(double.Parse(tbRotacao.Text), new Point((int)Mx, (int)My), 'e'); } ReexibePoligono(); }