Exemplo n.º 1
0
        private void mostrarArbol(Graphics pGrafica, int x, int y, Nodo pNodo)
        {
            Pen   pDatos  = new Pen(Color.Black);
            Pen   pElipse = new Pen(Color.Red);
            Brush b       = new SolidBrush(this.ForeColor);

            imagenes[0] = Image.FromFile("imagenes/and.png");
            imagenes[1] = Image.FromFile("imagenes/or.png");
            imagenes[2] = Image.FromFile("imagenes/nand.png");
            imagenes[3] = Image.FromFile("imagenes/nor.png");
            imagenes[4] = Image.FromFile("imagenes/xor.png");
            imagenes[5] = Image.FromFile("imagenes/xnor.png");
            imagenes[6] = Image.FromFile("imagenes/not.png");

            if (pNodo == null)
            {
            }
            else
            {
                int    anchoSeparacion = ServicioArbolBinario.darCuantosPadre(pNodo) * (SEPARACION / 2);
                String cadena          = pNodo.getDatos();
                switch (cadena)
                {
                case "*":

                    pGrafica.DrawImage(imagenes[0], x - 10, y - 20);
                    break;

                case "+":

                    pGrafica.DrawImage(imagenes[1], x - 10, y - 20);
                    break;

                case "&":

                    pGrafica.DrawImage(imagenes[2], x - 10, y - 20);
                    break;

                case "%":

                    pGrafica.DrawImage(imagenes[3], x - 10, y - 20);
                    break;

                case "#":

                    pGrafica.DrawImage(imagenes[4], x - 10, y - 20);
                    break;

                case "/":

                    pGrafica.DrawImage(imagenes[5], x - 10, y - 20);
                    break;

                case "$":

                    pGrafica.DrawImage(imagenes[6], x - 10, y - 20);
                    break;

                default:

                    pGrafica.DrawEllipse(pDatos, x - 10, y - 20, MEDIDA_ELIPSE, MEDIDA_ELIPSE);
                    pGrafica.DrawString(pNodo.getDatos(), new Font("Verdana", 15), b, x + 3, y - 12);
                    break;
                }

                if (pNodo.getIzq() != null)
                {
                    pGrafica.DrawLine(pDatos, x - 10, y + 2, x - SEPARACION - anchoSeparacion + RADIO, y + SEPARACION - RADIO - 5);
                }
                if (pNodo.getDer() != null)
                {
                    pGrafica.DrawLine(pDatos, x + 58, y + 2, x + SEPARACION + anchoSeparacion + RADIO, y + SEPARACION - RADIO - 5);
                }
                mostrarArbol(pGrafica, x - SEPARACION - anchoSeparacion, y + SEPARACION, pNodo.getIzq());
                mostrarArbol(pGrafica, x + SEPARACION + anchoSeparacion, y + SEPARACION, pNodo.getDer());
            }
        }