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)\MindFusion\MindFusion.Diagramming for WinForms\CLR4 (.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 = ;
layout.Arrange(mDiagram.Diagram);
12,编译执行

11,编译器请在"Form1.cs"代码头添加
using MindFusion.Diagramming;
using MindFusion.Diagramming.Layout;
using System.Xml;
12,如果运行时提示找不到"SampleGraph.xml"文件,请在项目路径下将SampleGraph.xml拷贝到bin\Debug文件夹中。
Diagramming for WinForms 教程一(读取图元数据)的更多相关文章
- 【SQLite】教程09-VBA读取SQLite数据之ODBC,及中文乱码问题
VBA使用ODBC Driver for SQLite读SQLite 如下图有这么一个SQlite数据库,我们要读取它 需要先安装ODBC,可以从这里下载: SQLite 3 ODBC Driver ...
- [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序读取相关数据
这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第七篇:为ASP.NET MVC应用程序 ...
- 为ASP.NET MVC应用程序读取相关数据
为ASP.NET MVC应用程序读取相关数据 2014-05-08 18:24 by Bce, 299 阅读, 0 评论, 收藏, 编辑 这是微软官方教程Getting Started with En ...
- ng1 http 读取json数据
在前端开发过程中,有时后端还没开发出接口,需要经常自己构造获取本地mock数据. AngularJS XMLHttpRequest $http 是 AngularJS 中的一个核心服务,用于读取远程服 ...
- Pandas之:Pandas高级教程以铁达尼号真实数据为例
Pandas之:Pandas高级教程以铁达尼号真实数据为例 目录 简介 读写文件 DF的选择 选择列数据 选择行数据 同时选择行和列 使用plots作图 使用现有的列创建新的列 进行统计 DF重组 简 ...
- CRL快速开发框架系列教程九(导入/导出数据)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- java的poi技术读取Excel数据到MySQL
这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...
- Hive读取外表数据时跳过文件行首和行尾
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 有时候用hive读取外表数据时,比如csv这种类型的,需要跳过行首或者行尾一些和数据无关的或者自 ...
- 读取数据库数据,并将数据整合成3D饼图在jsp中显示
首先我将生成饼图的方法独立写成一个PieChar.java类,详细代码如下:(数据库需要自己建,如有需要的话) import java.io.IOException; import java.sql. ...
随机推荐
- sip_hangup_disposition
sip_hangup_disposition This variable contains the value of who sent the SIP BYE message. Some exampl ...
- python-RabbitMQ基础篇
一.RabbitMQ简单介绍 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, ...
- linux shell 使用总结
为什么执行脚本要使用./ +脚本名来执行脚本理解:因为如果直接使用脚本名,那么linux 系统会去path 路径查找如去/bin usr/bin 等查找,这个时候会找不到这个脚本名字,就会报错.使用. ...
- nodejs项目在webstorm里进行debug的设定
菜单 > Run > Edit Configurations... 菜单 > Run > Debug... 菜单 > Run > Edit Configuratio ...
- LAMP平台搭建菜鸟入门级实验
LAMP平台搭建(菜鸟入门级) mysql 安装: (1)二进制安装 二进制安装 ,执行解压配置即可.无须执行三布安装. (2)源码编译安装 安装准备工作: (1)查看系统配置:#uname -a/ ...
- Reflector 反编译 .NET文件后修复
反编译后的工程文件用VS2010打开后,在打开窗体时会出现一系列错误提示: 第一种情况: “设计器无法处理第 152 行的代码: base.AutoScaleMode = AutoScaleMode. ...
- Logstash安装及部署
安装及部署 一.环境配置 操作系统:Cent OS 7 Logstash版本:2.1.1.tar.gz JDK版本:1.7.0_51 SSH Secure Shell版本:XShell 5 二.操作过 ...
- python xlwt,xlutils 在excel里面如何插入一行数据
就是把插入行之后值重新输出来. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 import xl ...
- Java事务处理全解析(四)—— 成功的案例(自己实现一个线程安全的TransactionManager)
在本系列的上一篇文章中我们讲到,要实现在同一个事务中使用相同的Connection对象,我们可以通过传递Connection对象的方式达到共享的目的,但是这种做法是丑陋的.在本篇文章中,我们将引入另外 ...
- 【转】CSS深入理解流体特性和BFC特性下多栏自适应布局
这篇文章发布于 2015年02月12日,星期四,23:36,归类于 css相关. 阅读 30873 次, 今日 63 次 by zhangxinxu from http://www.zhangxinx ...