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)\MindFusion\MindFusion.Diagramming for WinForms\CLR4 (.NET 4.0 and .NET 4.5)“。

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

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

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <Graph>
  3. <Nodes>
  4. <Node id="0" name="start" />
  5. <Node id="1" name="activity 1" />
  6. <Node id="2" name="task 1" />
  7. <Node id="3" name="task 2" />
  8. <Node id="4" name="activity 2" />
  9. <Node id="5" name="task 3" />
  10. <Node id="6" name="task 4" />
  11. <Node id="7" name="activity 3" />
  12. <Node id="8" name="task 5" />
  13. <Node id="9" name="task 6" />
  14. <Node id="10" name="end" />
  15. </Nodes>
  16. <Links>
  17. <Link origin="0" target="1" />
  18. <Link origin="1" target="2" />
  19. <Link origin="1" target="3" />
  20. <Link origin="2" target="4" />
  21. <Link origin="3" target="4" />
  22. <Link origin="4" target="5" />
  23. <Link origin="4" target="6" />
  24. <Link origin="5" target="10" />
  25. <Link origin="6" target="10" />
  26. <Link origin="0" target="7" />
  27. <Link origin="7" target="8" />
  28. <Link origin="8" target="9" />
  29. <Link origin="1" target="9" />
  30. <Link origin="9" target="10" />
  31. </Links>
  32. </Graph>

6,重载Form1的Load事件

  1. private void Form1_Load(object sender, EventArgs e)
  2. {
  3.  
  4. }

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

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

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

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

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

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

10,导入DiagramLink对象

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

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

  1. LayeredLayout layout = new LayeredLayout();
  2. layout.LayerDistance = ;
  3. layout.Arrange(mDiagram.Diagram);

12,编译执行

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

  1. using MindFusion.Diagramming;
  2. using MindFusion.Diagramming.Layout;
  3. using System.Xml;

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

Diagramming for WinForms 教程一(读取图元数据)的更多相关文章

  1. 【SQLite】教程09-VBA读取SQLite数据之ODBC,及中文乱码问题

    VBA使用ODBC Driver for SQLite读SQLite 如下图有这么一个SQlite数据库,我们要读取它 需要先安装ODBC,可以从这里下载: SQLite 3 ODBC Driver ...

  2. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序读取相关数据

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第七篇:为ASP.NET MVC应用程序 ...

  3. 为ASP.NET MVC应用程序读取相关数据

    为ASP.NET MVC应用程序读取相关数据 2014-05-08 18:24 by Bce, 299 阅读, 0 评论, 收藏, 编辑 这是微软官方教程Getting Started with En ...

  4. ng1 http 读取json数据

    在前端开发过程中,有时后端还没开发出接口,需要经常自己构造获取本地mock数据. AngularJS XMLHttpRequest $http 是 AngularJS 中的一个核心服务,用于读取远程服 ...

  5. Pandas之:Pandas高级教程以铁达尼号真实数据为例

    Pandas之:Pandas高级教程以铁达尼号真实数据为例 目录 简介 读写文件 DF的选择 选择列数据 选择行数据 同时选择行和列 使用plots作图 使用现有的列创建新的列 进行统计 DF重组 简 ...

  6. CRL快速开发框架系列教程九(导入/导出数据)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  7. java的poi技术读取Excel数据到MySQL

    这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...

  8. Hive读取外表数据时跳过文件行首和行尾

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 有时候用hive读取外表数据时,比如csv这种类型的,需要跳过行首或者行尾一些和数据无关的或者自 ...

  9. 读取数据库数据,并将数据整合成3D饼图在jsp中显示

    首先我将生成饼图的方法独立写成一个PieChar.java类,详细代码如下:(数据库需要自己建,如有需要的话) import java.io.IOException; import java.sql. ...

随机推荐

  1. 第二周PSP

    PSP: C(分类) C(内容) S(开始时间) ST(结束时间) I(打断时间) △(净工作时间)(分钟) 读书 构建之法 18:00 19:25 0 85 读书 构建之法 9:30 11:20 1 ...

  2. java Scanner

    public static void main(String[] args) throws IOException { System.out.print("Enter a number:&q ...

  3. JSBinding / Code Snippets

    new a gameobject & overloaded methds var go1 = new UnityEngine.GameObject.ctor(); var go2 = new ...

  4. 【python】删除1~100的素数

    def delPrime(x): if x==1: return True for y in range(2,x): if x%y==0: return True return False x1=ra ...

  5. 仿微信朋友圈图片查看-glide加载网络图片,photoview 实现缩放

    http://www.cnblogs.com/csonezp/p/5083286.html 这里实现的效果就和微信朋友圈点击图片后查看大图一样,如果你不清楚是什么效果,可以拿出手机,打开朋友圈,找到一 ...

  6. NeHe OpenGL教程 第四十八课:轨迹球

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  7. Selenium

    Selenium可以抓取完整的页面的html但是request 和java的url不能抓的很完整. selenium的方法是dirver.page_source

  8. 约瑟夫(环)问题(Josephus problem)

    问题描述:皇帝决定找出全国中最幸运的一个人,于是从全国选拔出 n 个很幸运的人,让这 n 个人围着圆桌进餐,可是怎么选择出其中最幸运的一个人呢?皇帝决定:从其中一个人从 1 开始报数,按顺序数到第 k ...

  9. HDU5878

    http://acm.hdu.edu.cn/showproblem.php?pid=5878 给出你一个数字,让你求出大于这个数字n并且是形如2^a*3^b*5^c*7^d的最小的数: 就是用打表法求 ...

  10. java语句练习1

    public class Demo完数{ /* * 问题:求1000以内的完数(一个数等于除它本身之外的因数之和)及个数. * 分析:例如6=1+2+3 * 遍历语句:判断语句:计数器:1除外 */ ...