我们将树节点分为叶子节点和非叶子节点。一个叶子节点可以简单的处理为一个加了矩形边框的字符串,一个非叶子节点可以处理为一个加了矩形边框的字符串下面连接一堆树。先看看结果吧。下面有两幅图片,表示的都是使用这篇文章的程序产生的两棵语法树。
实现了一个很简单的功能,将一棵树转换成
bmp图片并自动排版。
思路非常简单。如果由于图片太大而看不清楚,就另存为到硬盘上慢慢观赏吧。
这个算法并没有通过什么计算来得到一个紧凑的图片。
可以将元素分为树、文字以及线条。构造这种图的要领是每一个节点的坐标信息都使用父节点的坐标空间。这样的话不仅可以很快计算出图片所需要的尺寸,而且还可以很方便的绘制。绘制的时候递归一下,每加深一层就修改一下坐标空间。