• Diagramming for WinForms 教程一(读取图元数据)


    1,新建“Visual c#” Windows窗体应用程序。

    2,从“工具箱”的“Diagramming”选项卡下,托出“DiagramView”控件到Form1上。控件的"Name"属性设置为“mDiagram”,“Dock”属性设置为"Fill"。

    3,在项目树的“引用“上右键选择”添加引用“,在弹出的”添加引用“面板中的”浏览“选项卡下,选择控件安装路径下的”MindFusion.Common.dll“、”MindFusion.Diagramming.dll“、”MindFusion.Common.WinForms.dll“。一般路径为”C:Program Files (x86)MindFusionMindFusion.Diagramming for WinFormsCLR4 (.NET 4.0 and .NET 4.5)“。

    4,在项目树上选择”添加/新建项/XML文件“,并重命名为”SampleGraph.xml“。

    5,复制以下代码到”SampleGraph.xml“文件中。     

    <?xml version="1.0" encoding="utf-8" ?>
    <Graph>
        <Nodes>
            <Node id="0" name="start" />
            <Node id="1" name="activity 1" />
            <Node id="2" name="task 1" />
            <Node id="3" name="task 2" />
            <Node id="4" name="activity 2" />
            <Node id="5" name="task 3" />
            <Node id="6" name="task 4" />
            <Node id="7" name="activity 3" />
            <Node id="8" name="task 5" />
            <Node id="9" name="task 6" />
            <Node id="10" name="end" />
        </Nodes>
        <Links>
            <Link origin="0" target="1" />
            <Link origin="1" target="2" />
            <Link origin="1" target="3" />
            <Link origin="2" target="4" />
            <Link origin="3" target="4" />
            <Link origin="4" target="5" />
            <Link origin="4" target="6" />
            <Link origin="5" target="10" />
            <Link origin="6" target="10" />
            <Link origin="0" target="7" />
            <Link origin="7" target="8" />
            <Link origin="8" target="9" />
            <Link origin="1" target="9" />
            <Link origin="9" target="10" />
        </Links>
    </Graph>

    6,重载Form1的Load事件

    private void Form1_Load(object sender, EventArgs e)
            {
    
            }

    7,在load事件代码中,添加以下变量。"nodeMap"是图中节点的标识符,"bounds"包含了默认的节点尺寸。

    Dictionary<string, DiagramNode> nodeMap = new Dictionary<string, DiagramNode>();
    RectangleF bounds = new RectangleF(0, 0, 18, 6);
    

    8,使用XML DOM API 来读取XML文档

    XmlDocument document = new XmlDocument();
    document.Load("SampleGraph.xml");

    9,通过”Factory“类下的”CreateShapeNode“方法来导入图形节点元素保存到相应的"ShapeNode"对象中。

    XmlNodeList nodes = document.SelectNodes("/Graph/Nodes/Node");
    foreach (XmlElement node in nodes)
    {
        ShapeNode diagramNode = mDiagram.Diagram.Factory.CreateShapeNode(bounds);
        nodeMap[node.GetAttribute("id")] = diagramNode;
        diagramNode.Text = node.GetAttribute("name");
    }

    10,导入DiagramLink对象

    XmlNodeList links = document.SelectNodes("/Graph/Links/Link");
    foreach (XmlElement link in links)
    {
        mDiagram.Diagram.Factory.CreateDiagramLink(
            nodeMap[link.GetAttribute("origin")],
            nodeMap[link.GetAttribute("target")]);
    }

    11,使用LayeredLayout类来安排流程图

    LayeredLayout layout = new LayeredLayout();
    layout.LayerDistance = 12;
    layout.Arrange(mDiagram.Diagram);

    12,编译执行

    11,编译器请在"Form1.cs"代码头添加

    using MindFusion.Diagramming;
    using MindFusion.Diagramming.Layout;
    using System.Xml;

    12,如果运行时提示找不到"SampleGraph.xml"文件,请在项目路径下将SampleGraph.xml拷贝到binDebug文件夹中。

  • 相关阅读:
    linux下解压命令大全
    关于一个订单多商品如何发表评价的问题
    浏览器通知
    简易时钟
    微信小程序地图控件篇 自定义图标被地图覆盖的问题
    面向对象拖拽
    elementUI的Dialog弹出框蒙版被遮住
    面向对象轮播图
    高内聚低耦合
    苦逼程序员
  • 原文地址:https://www.cnblogs.com/visio/p/5086188.html
Copyright © 2020-2023  润新知