家谱/树形图应该怎么画?

Cocoachina上有位仁兄一直求助这个问题,但是也没人给出Demo参考.虽然楼主以前也没做过类似的功能,但还是愿意试一试,所以就有了今天的这篇文章把一些遇到的问题和心得分享出来,一起学习共勉

思路分析

家谱中有多个人物,关系也比较复杂,各种画线有点乱,为了避免频繁的声明变量以及节约内存,楼主决定直接用CG绘图去写


其实就是想练下手

另外创建一个模型类用来存储一些通用信息,比如姓名,fram,子类,


顺便再玩玩链表

遇到的问题

  • 首先就是链表就遇到了问题,我是这样写的模型类


    家谱/树形图应该怎么画?_第1张图片

    自己套自己,有点递归的感觉.刚开始用感觉还不错,但是层级越多,写起来越难以维护且不严谨.

家谱/树形图应该怎么画?_第2张图片
创建模型

可以看出越往下,sunModel的嵌套就越来越多,维护起来越困难.这点希望有达人能够较好的优化下.

  • 实现的时候发现层级完全是个不可控因素,可能多可能少,所以必须有一
    个独立的算法来计算排版,有点类似倒过来的金字塔

想了半天实在不知道怎么描述....简单来说通过一个递归和数组,不断查找是否存在子类,来进行绘图操作,完全页面绘制


突然不知道怎么说

直接附上地址吧:https://github.com/WeiTChen/Tree-diagram

有些地方架构不是很好,希望大牛更正指出,十分感谢!!!

你可能感兴趣的:(家谱/树形图应该怎么画?)