MindFusion.Diagramming框架
在C#中使用MindFusion.Diagramming.dll庫來創建圖表和圖形界面,可以讓你構建出豐富和交互式的圖形應用。MindFusion.Diagramming 是一個強大的庫,支持創建各種類型的圖表,例如流程圖、網絡圖、組織結構圖等。
MindFusion.Diagramming框架是基于微軟的GDI+框架(System.Drawing)基礎上二次開發而成的圖表框架
圖Diagram(Graph)是由節點Node(頂點,環節)和連線Line組成
關鍵類
①圖表MindFusion.Diagramming.Diagram
public class Diagram : DiagramBase, IPersists, IItemFactory
主要屬性:
public DiagramItemCollection Items { get; } //獲取圖表中的所有對象,包含節點Nodes和連線Links
public DiagramNodeCollection Nodes { get; }//獲取圖表中的所有節點Nodes
public DiagramLinkCollection Links { get; }//獲取圖中的所有連線Links
public MeasureUnit MeasureUnit { get; set; }//獲取或設置用于此圖中邏輯坐標的度量單位(默認為毫米mm)。
②節點[頂點,環節]MindFusion.Diagramming.DiagramNode
public abstract class DiagramNode : DiagramItem, IPersists
主要屬性:
public DiagramLinkCollection IncomingLinks { get; }
//獲取指向該節點的連線[鏈接]集合[輸入]
public DiagramLinkCollection OutgoingLinks { get; }
//獲取從此節點開始的鏈接集合。[輸出]
③節點連線MindFusion.Diagramming.DiagramLink
public class DiagramLink : DiagramItem, IPersists, InplaceEditable
主要屬性:
public DiagramNode Origin { get; set; }//獲取或設置鏈接的源節點。
public DiagramNode Destination { get; set; }//獲取或設置此鏈接的目標節點。
public LinkShape Shape { get; set; }
//獲取或設置鏈接段的類型以及它們之間的相對位置。
④形狀節點MindFusion.Diagramming.ShapeNode
public class ShapeNode : DiagramNode, IPersists, InplaceEditable
ShapeNode實例是表示幾何形狀的圖表節點。
主要屬性:
public Image Image { get; set; } //圖片
public string Text { get; set; } //文本
public Shape Shape { get; set; } //幾何形狀
public override Font Font { get; set; }//字體
⑤圖表元素項MindFusion.Diagramming.DiagramItem
public abstract class DiagramItem : IPersists, IDisposable
表示圖表文檔中的一個項目。所有表示圖表元素的類都派生自DiagramItem。
主要屬性
public object Id { get; set; }//自定義標識符
public object Tag { get; set; }//用戶自定義數據
public float Weight { get; set; }//獲取或設置布局和路徑查找算法中使用的權重值。
public string ToolTip { get; set; }//鼠標懸浮時短文本信息
⑥矢量圖形節點MindFusion.Diagramming.SvgNode
public class SvgNode : ShapeNode
SVG(Scalable Vector Graphics)可縮放矢量圖形,svg基于xml語法.SVG支持三種類型的圖形對象:矢量圖形形狀(例如,由直線和曲線組成的路徑), 圖像和文本。可以對圖形對象進行分組、樣式化轉化和合成。 功能集包括嵌套變換、裁剪路徑、Alpha蒙版、濾鏡效果和模板對象。
主要屬性:
public MindFusion.Svg.SvgContent Content { get; set; }//即XmlElement
⑦表格節點MindFusion.Diagramming.TableNode
public class TableNode : DiagramNode, IPersists, InplaceEditable
表格節點可以包含多個單元格,并且可以通過其行與其他節點相關聯。表格就是一種行列式
主要屬性:
public RowCollection Rows { get; }
public ColumnCollection Columns { get; }
public Cell this[int col, int row] { get; }
⑧樹圖節點MindFusion.Diagramming.TreeViewNode
public class TreeViewNode : DiagramNode, InplaceEditable
表示可以繪制層次數據的節點。
主要屬性:
public IList<TreeViewItem> RootItems { get; }
⑨虛擬節點MindFusion.Diagramming.DummyNode
public class DummyNode : DiagramNode
表示用于斷開連接的鏈接的虛擬節點
記錄拖放drag節點MindFusion.Diagramming.DraggedNode
?public class DraggedNode
用于在拖放過程中保存DiagramNode實例的類。它用于更容易地檢測拖動的內容,如DragEventArgs.Data.GetData()
圖表界面集合MindFusion.Diagramming.DiagramDocument
public class DiagramDocument : DiagramBase
表示圖表頁面的集合
主要屬性:
public ObservableCollection<DiagramPage> Pages { get; }
public void SaveToXml(XmlDocument document)
public void LoadFromXml(XmlDocument document);
元素模板MindFusion.Diagramming.ElementTemplate
public abstract class ElementTemplate : IPersists, ICloneable
表示形狀定義的元素。這是特定元素類型的父類,如ArcTemplate、LineTemplate和BezierTemplate。
路徑MindFusion.Diagramming.Path
public sealed class Path
表示連接的DiagramNode和DiagramLink元素的序列
主要屬性:
public DiagramNodeCollection Nodes? { get; }
public DiagramLinkCollection Links? { get; }
public DiagramItemCollection Items { get; }
幾何形狀MindFusion.Diagramming.Shape
public class Shape : IPersists, ICloneable
主要屬性:
public Image Image { get; set; }
public string Id { get; set; }
public string DisplayName { get; set; }
public ElementTemplate[] Outline { get; set; }
形狀集合枚舉MindFusion.Diagramming.Shapes
返回各種幾何形狀 如:Shapes.Rectangle
? ? //? ? ?Provides alternative method of access to the MindFusion.Diagramming predefined
? ? // ? ? shapes, that allows code completion and Intellisense support, which is not available
? ? // ? ? when using Shape.FromId(). The accessor properties are generating using the following
? ? // ? ? code: TextWriter writer = new StreamWriter(@"D:\shapes.txt"); foreach (Shape
? ? // ? ? shape in Shape.Shapes) { writer.WriteLine("static public Shape " + shape.Id);
? ? // ? ? writer.WriteLine("{"); writer.WriteLine("\tget { return Shape.FromId(\"" + shape.Id
? ? // ? ? + "\"); }"); writer.WriteLine("}"); writer.WriteLine(); writer.Flush(); }