Esempio n. 1
0
        private void FrmCaminhos_Load(object sender, EventArgs e)
        {
            arvoreCidades = new ArvoreDeBusca <Cidades>();

            // leitura do arquivo de cidades e armazenamento na arvoreCidades
            dlgAbrir.Title = "Escolha o arquivo das Cidades de Marte";
            if (dlgAbrir.ShowDialog() == DialogResult.OK)  // abre explorador de arquivos p/ usuario escolher arquivo
            {
                StreamReader arq = new StreamReader(dlgAbrir.FileName);
                while (!arq.EndOfStream)             // enquanto não estiver no fim do arquivo
                {
                    string  linha  = arq.ReadLine(); // le uma linha por vez
                    Cidades cidade = new Cidades(int.Parse(linha.Substring(0, 3)), linha.Substring(3, 15), int.Parse(linha.Substring(18, 5)), int.Parse(linha.Substring(24)));
                    arvoreCidades.Incluir(cidade);   // add na arvore
                }
                arq.Close();
            }

            // leitura do arquivo de cidades e armazenamento na arvoreCidades
            dlgAbrir.Title = "Escolha o arquivo dos Caminhos entre as Cidades de Marte";
            if (dlgAbrir.ShowDialog() == DialogResult.OK) // abre explorador de arquivos p/ usuario escolher arquivo
            {
                grafoCidades = new GrafoBacktracking(dlgAbrir.FileName);
            }

            // exibe as cidades e seus ids nos listBoxes
            arvoreCidades.ExibirLsb(lsbDestino);
            arvoreCidades.ExibirLsb(lsbOrigem);

            // cria grafico para desenhar sobre o picture box com o mapa
            g = Graphics.FromImage(pbMapa.Image);
            arvoreCidades.DesenharMapa(arvoreCidades.Raiz, g);
            // coloca os pontos de cada cidade
        }
Esempio n. 2
0
 private void DesenharCaminho(PilhaLista <CaminhoEntreCidades> caminho)
 {
     // cria um novo gráfico sobre o pictureBox
     g = pbMapa.CreateGraphics();
     //redesenha as cidades nas coordenadas corretas
     arvoreCidades.DesenharMapa(arvoreCidades.Raiz, g);
     // atualiza
     pbMapa.Refresh();
     while (!caminho.EstaVazia) // percorre o caminho
     {
         var atual = caminho.OTopo();
         // resgata e instancia as cidades de origem e destino de cada passo
         Cidades origem  = arvoreCidades.GetDado(new Cidades(atual.IdCidadeOrigem));
         Cidades destino = arvoreCidades.GetDado(new Cidades(atual.IdCidadeDestino));
         // instancia-se caneta para desenhar as linhas
         Pen pen = new Pen(Color.DarkRed, 2); // cor: vermelho escuro - espessura = 2px
         pen.StartCap = LineCap.RoundAnchor;  // bolinha no início da seta (origem)
         pen.EndCap   = LineCap.ArrowAnchor;  // seta no fim da reta (destino)
         //pontos de coordenadas da origem e do destino
         PointF pOrigem  = new PointF(origem.CoordenadaX / 4 + 5, origem.CoordenadaY / 4 + 5);
         PointF pDestino = new PointF(destino.CoordenadaX / 4 + 5, destino.CoordenadaY / 4 + 5);
         g.DrawLine(pen, pOrigem, pDestino); // desenha a linha
         caminho.Desempilhar();
     }
     // atualiza graphic
     g.Dispose();
 }