C#使用MindFusion.Diagramming框架绘制流程图(1):基础类型
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(); }