예제 #1
0
        private void DesenhaNoArvore(NoArvore noArvore, double x, double y, double tamanhoAtual)
        {
            ElementoArvore el = noArvore.ElementoGrafico;

            Canvas.SetLeft(el, x - 15);
            Canvas.SetTop(el, y);
            tamanhoAtual /= 2;
            canvas4.Children.Add(el);
            if (noArvore.NoDireito != null)
            {
                DesenhaNoArvore(noArvore.NoDireito, x + tamanhoAtual, y + 40, tamanhoAtual);
            }
            if (noArvore.NoEsquerdo != null)
            {
                DesenhaNoArvore(noArvore.NoEsquerdo, x - tamanhoAtual, y + 40, tamanhoAtual);
            }
            if (noArvore.NoPai != null)
            {
                el.Conector.X1 = Canvas.GetLeft(noArvore.NoPai.ElementoGrafico) + 15;
                el.Conector.Y1 = Canvas.GetTop(noArvore.NoPai.ElementoGrafico) + 15;
                el.Conector.X2 = Canvas.GetLeft(noArvore.ElementoGrafico) + 15;
                el.Conector.Y2 = Canvas.GetTop(noArvore.ElementoGrafico) + 15;
                Panel.SetZIndex(el.Conector, -1);
                canvas4.Children.Add(el.Conector);
            }
        }
예제 #2
0
        private void btnAdiciona_Click(object sender, RoutedEventArgs e)
        {
            double x;
            double y;
            double tamanhoAtual = canvas4.ActualWidth / 2;

            if (textBox4.Text != "")
            {
                try
                {
                    LimpaAtual();
                    NoArvore noInsere = arvore.Insere(textBox4.Text);
                    string   caminho  = arvore.CaminhoNo(textBox4.Text);
                    y = (caminho.Length * 40) + 10;
                    x = tamanhoAtual;
                    for (int i = 0; i < caminho.Length; i++)
                    {
                        tamanhoAtual /= 2;
                        if (caminho[i] == '1')
                        {
                            x -= tamanhoAtual;
                        }
                        else
                        {
                            x += tamanhoAtual;
                        }
                    }
                    var el = new ElementoArvore();
                    el.Imagem   = CriaImagem("Folha1Arvore.png");
                    el.Conteudo = textBox4.Text;
                    Canvas.SetLeft(el, x - 15);
                    Canvas.SetTop(el, y);
                    canvas4.Children.Add(el);
                    noInsere.ElementoGrafico = el;
                    if (noInsere.NoPai != null)
                    {
                        InsereLinha(noInsere);
                    }
                }
                catch (InvalidOperationException ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            textBox4.Focus();
            textBox4.SelectAll();
        }