彩票走势图

流程图控件FlowChart.NET使用教程:加载图形数据和创建图形对象

原创|使用教程|编辑:郝浩|2013-05-29 14:47:01.000|阅读 4268 次

概述:FlowChart.NET是一个通用的流程图控件,提供了用于创建或编辑图表的直观的用户交互模型。今天演示一下如何加载来自XML的图形数据,以及创建对应于图形节点和边的图形对象。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

今天演示一下在FlowChart.NET中如何加载来自XML的图形数据,以及创建对应于图形节点和边的图形对象。

1、右键单击项目的上下文菜单中选择“添加”- > “新建项目”。创建一个新的XML文件,命名为SampleGraph.xml,并对它添加以下的内容:

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>

2、设置文件的“生成操作”属性到“内容”,同时“复制到输出目录”到“如果有新的,就执行复制”。

3、添加一个OnLoad覆盖到窗体:

C#

protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
}

Visual Basic

Protected Overrides Sub OnLoad(ByVal e As EventArgs)
    MyBase.OnLoad(e)
End Sub

4、添加以下变量的Loaded处理程序,“nodeMap”地图图像节点到其他的标识符,在这里“边界”包含了默认的节点大小。

C#

Dim nodeMap As New Dictionary(Of String, DiagramNode)()
Dim bounds As New RectangleF(0, 0, 18, 6)

Visual Basic

Dim nodeMap As New Dictionary(Of String, DiagramNode)()
Dim bounds As New RectangleF(0, 0, 18, 6)

5、使用XML DOM API加载XML 文档:

C#

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

Visual Basic

' Load the graph xml
Dim document As New XmlDocument()
document.Load("SampleGraph.xml")

6、加载图节点元素,并通过调用 CreateShapeNode 方法的Factory类创建相应的 ShapeNode 对象。CreateShapeNode只是一个创建ShapeNode实例使用“new”运算法的快捷方式,并将他添加到图中节点集。此外,代码映射的新节点到XML原纱央莉的“id”属性,同时设置节点的文本到&ldquo;name”属性的值。

C#

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

Visual Basic

' Load node data
Dim nodes As XmlNodeList = document.SelectNodes("/Graph/Nodes/Node")
For Each node As XmlElement In nodes

    Dim diagramNode As ShapeNode = diagram.Factory.CreateShapeNode(bounds)
    nodeMap(node.GetAttribute("id")) = diagramNode
    diagramNode.Text = node.GetAttribute("name")

Next

7、导入图形链接和创建相应的DiagramLink对象,“nodeMap”字典来源和目的地的链接可以通过它们的id来访问。

C#

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

Visual Basic

' Load link data
Dim links As XmlNodeList = document.SelectNodes("/Graph/Links/Link")
For Each link As XmlElement In links
    diagram.Factory.CreateDiagramLink(nodeMap(link.GetAttribute("origin")), nodeMap(link.GetAttribute("target")))
Next

8、安排流程图使用LayeredLayout类。

C#

// Arrange the graph
LayeredLayout layout = new LayeredLayout();
layout.LayerDistance = 12;
layout.Arrange(diagram);

Visual Basic

' Arrange the graph
Dim layout As New LayeredLayout()
layout.LayerDistance = 12
layout.Arrange(diagram)

9、构建和运行项目。 如果一切正常,将会看见如下的图:

流程图控件FlowChart.NET使用教程:加载图形数据和创建图形对象


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn

文章转载自:慧都控件

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP