原創(chuàng)|使用教程|編輯:郝浩|2013-05-29 14:47:01.000|閱讀 4349 次
概述:FlowChart.NET是一個(gè)通用的流程圖控件,提供了用于創(chuàng)建或編輯圖表的直觀的用戶交互模型。今天演示一下如何加載來自XML的圖形數(shù)據(jù),以及創(chuàng)建對(duì)應(yīng)于圖形節(jié)點(diǎn)和邊的圖形對(duì)象。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
今天演示一下在FlowChart.NET中如何加載來自XML的圖形數(shù)據(jù),以及創(chuàng)建對(duì)應(yīng)于圖形節(jié)點(diǎn)和邊的圖形對(duì)象。
1、右鍵單擊項(xiàng)目的上下文菜單中選擇“添加”- > “新建項(xiàng)目”。創(chuàng)建一個(gè)新的XML文件,命名為SampleGraph.xml,并對(duì)它添加以下的內(nèi)容:
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、設(shè)置文件的“生成操作”屬性到“內(nèi)容”,同時(shí)“復(fù)制到輸出目錄”到“如果有新的,就執(zhí)行復(fù)制”。
3、添加一個(gè)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”地圖圖像節(jié)點(diǎn)到其他的標(biāo)識(shí)符,在這里“邊界”包含了默認(rèn)的節(jié)點(diǎn)大小。
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、加載圖節(jié)點(diǎn)元素,并通過調(diào)用 CreateShapeNode 方法的Factory類創(chuàng)建相應(yīng)的 ShapeNode 對(duì)象。CreateShapeNode只是一個(gè)創(chuàng)建ShapeNode實(shí)例使用“new”運(yùn)算法的快捷方式,并將他添加到圖中節(jié)點(diǎn)集。此外,代碼映射的新節(jié)點(diǎn)到XML原紗央莉的“id”屬性,同時(shí)設(shè)置節(jié)點(diǎn)的文本到“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、導(dǎo)入圖形鏈接和創(chuàng)建相應(yīng)的DiagramLink對(duì)象,“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、構(gòu)建和運(yùn)行項(xiàng)目。 如果一切正常,將會(huì)看見如下的圖:
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件