//Filtrar niveles public void filtrarNiveles() { for (int i = 0; i < nodosOrdenados.Count; i++) { Nodos nodoNuevo = (Nodos)nodosOrdenados[i]; int nivelNuevo = getNivel(nodoNuevo.getPadre()); if (nivelNuevo != 0) { nodoNuevo.getPadre().setNivel(nivelNuevo); } } }
//Validar que el nodo tenga hijos public Boolean validarHijos(Nodos nodo) { for (int i = 0; i < nodosOrdenados.Count; i++) { Nodos nodoAux = (Nodos)nodosOrdenados[i]; if (nodo.getNombre().Equals(nodoAux.getPadre().getNombre()) && nodo.getNivel().Equals(nodoAux.getPadre().getNivel())) { return(true); } } return(false); }
//Generar arbol public void generarArbol() { //Crear carpeta string path = @"..\Arboles Sintacticos"; string contenido2 = ""; if (!Directory.Exists(path)) { DirectoryInfo di = Directory.CreateDirectory(path); } filtrarArbol(); for (int i = 0; i < nodosOrdenados.Count; i++) { Nodos nodo = (Nodos)nodosOrdenados[i]; contenido2 += "\"" + nodo.getPadre().getNombre() + " " + nodo.getPadre().getNivel() + "\"" + "->" + "\"" + nodo.getNombre() + " " + nodo.getNivel() + "\"" + ";\n"; } String inicio = "digraph G {"; string contenido1 = "{" + "node [margin=0 fontsize=12 shape=circle]\n"; String final = " }"; string graphVizString = inicio + contenido1 + contenido2 + final + final; Console.WriteLine(contenido2); Bitmap bm = new Bitmap(Graphviz.RenderImage(graphVizString, "jpg")); var imagen = new Bitmap(bm); bm.Dispose(); Image image = (Image)imagen; imagen.Save(path + @"\prueba.jpg", ImageFormat.Jpeg); imagen.Dispose(); IDE.ImagenArbol foto = new IDE.ImagenArbol(); foto.Show(); }