GLEE 是 Microsoft Research 的 Lev Nachmanson  开发的一个.NET 图形布局和查看的工具, 遵循了 Sugiyama 方案, 可以生成有层次的的布局, 自然地使用图形表示流程的信息, 如程序流程, 状态机, 类图等等.. 项目主页: http://research.microsoft.com/users/levnach/GLEEWebPage.htm

我用它来画语法分析中的状态图..非常方便.. 只需要下面几句代码便可以呈现整个语法分析的状态流程:

            Graph graph = new Graph("States");
            LRStateContainer states = new LRStateContainer(g);
            foreach (LRState st in states)
            {
                foreach (Symbol nextSym in st.FollowStates.Keys)
                {
                    graph.AddEdge(st.GetShowText(),
                                                      nextSym.Name, st.FollowStates[nextSym].GetShowText());
                }
            }
            graph.GraphAttr.NodeAttr.Shape = Shape.Box;
            graph.GraphAttr.Orientation = Microsoft.Glee.Drawing.Orientation.Portrait;
            graph.GraphAttr.LayerDirection = LayerDirection.LR;
            gViewer1.Graph = graph;

效果如下:


 
GLEE 主页上的示例图的内容有点 tricky: (Opera, FireFox copy IE5)
image

Posted on 2007-06-12 19:50 Adrian H. 阅读(...) 评论(...) 编辑 收藏