Exemplo n.º 1
0
        private void dgvCaminhos_SelectionChanged(object sender, EventArgs e)
        {
            Graphics g = pbMapa.CreateGraphics();
            Pen      p = new Pen(Color.Red, 2);
            int      codCidade, codProx;
            Cidade   cidade, prox;

            double fatorDeReducaoX = pbMapa.Width / 4096.0;
            double fatorDeReducaoY = pbMapa.Height / 2048.0;

            g.Clear(Color.Transparent);                                               //limpa o pbMapa
            g.DrawImage(pbMapa.Image, 0, 0, pbMapa.Width, pbMapa.Height);             //redesenha o mapa
            arvore.DesenharCidades(fatorDeReducaoX, fatorDeReducaoY, g, arvore.Raiz); //redesenha as cidades

            //pra cada o valor de cada celula na linha selecionada
            for (int i = 0; i < dgvCaminhos.ColumnCount - 1; i++)
            {
                try//verifica se tem valor na celula
                {
                    codCidade = (int)dgvCaminhos.CurrentRow.Cells[i].Value;
                    codProx   = (int)dgvCaminhos.CurrentRow.Cells[i + 1].Value;
                }
                catch (Exception ex) //se ocorrer erro, é porque não há nenhum valor em alguma das celulas
                {
                    break;           //sai da for, já que não haverá mais nenhum valor a partir daqui
                }
                //pega as cidades referentes aos codigos retornados
                cidade = arvore.EnconctrarCidade(codCidade, arvore.Raiz);
                prox   = arvore.EnconctrarCidade(codProx, arvore.Raiz);

                //desenha uma linha entre as cidades retornadas
                g.DrawLine(p, (float)(cidade.CoordX * fatorDeReducaoX), (float)(cidade.CoordY * fatorDeReducaoY), (float)(prox.CoordX * fatorDeReducaoX), (float)(prox.CoordY * fatorDeReducaoY));
            }
        }
Exemplo n.º 2
0
 private void pbMapa_Paint(object sender, PaintEventArgs e)
 {
     if (arvore != null)
     {
         Graphics g = e.Graphics;
         double   fatorDeReducaoX = pbMapa.Width / 4096.0;
         double   fatorDeReducaoY = pbMapa.Height / 2048.0;
         arvore.DesenharCidades(fatorDeReducaoX, fatorDeReducaoY, g, arvore.Raiz);
     }
 }