原創|使用教程|編輯:郝浩|2013-05-29 14:47:01.000|閱讀 4349 次
概述: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”屬性,同時設置節點的文本到“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、構建和運行項目。 如果一切正常,將會看見如下的圖:
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件