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); } }
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(); }