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(); }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/85991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LangChain【6】之输出解析器:结构化LLM响应的关键工具

文章目录 一 LangChain输出解析器概述1.1 什么是输出解析器&#xff1f;1.2 主要功能与工作原理1.3 常用解析器类型 二 主要输出解析器类型2.1 Pydantic/Json输出解析器2.2 结构化输出解析器2.3 列表解析器2.4 日期解析器2.5 Json输出解析器2.6 xml输出解析器 三 高级使用技巧3…

Spring Boot项目中JSON解析库的深度解析与应用实践

在现代Web开发中&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;作为轻量级的数据交换格式&#xff0c;已成为前后端通信的核心桥梁。Spring Boot作为Java生态中最流行的微服务框架&#xff0c;提供了对多种JSON库的无缝集成支持。本文将深入探讨Spring B…

OPenCV CUDA模块光流------高效地执行光流估计的类BroxOpticalFlow

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::cuda::BroxOpticalFlow 是 OpenCV CUDA 模块中实现Brox光流算法的类。该类用于在 GPU 上高效地计算两帧图像之间的稠密光流&#xff08;Dens…

视觉分析在人员行为属性检测中的应用

基于视觉分析的人员行为属性检测方案 一、背景与需求分析 在工业生产、建筑施工、公共安全等领域&#xff0c;人员行为属性的合规性检测是保障安全生产的关键环节。例如&#xff0c;工地工人未佩戴安全帽、厨房人员未佩戴手套、作业现场人员使用手机等行为&#xff0c;均可能…

Linux--进程的程序替换

问题导入&#xff1a; 前面我们知道了&#xff0c;fork之后&#xff0c;子进程会继承父进程的代码和“数据”&#xff08;写实拷贝&#xff09;。 那么如果我们需要子进程完全去完成一个自己的程序怎么办呢&#xff1f; 进程的程序替换来完成这个功能&#xff01; 1.替换原理…

场景题-3

如何实现一个消息队列 拆解分析主流的几种消息队列 1、基本架构 生产者Producer、消费者Consumer、Broker&#xff1a;生产者发送消息&#xff0c;消费者接受消息&#xff0c;Broker是服务端&#xff0c;处理消息的存储、备份、删除和消费关系的维护。 主题和分区&#xff…

vue2 项目中 npm run dev 运行98% after emitting CopyPlugin 卡死

今天在运行项目时&#xff0c;发现如下问题&#xff1a; 开始以为是node_modules依赖的问题&#xff0c;于是重新 npm install&#xff0c;重启项目后还是未解决。 在网上找了一圈发现有人说是 require引入图片地址没有写。在我的项目中排查没有这个问题&#xff0c;最后发现某…

73 LV的使用(XFS文件系统)

四 LV的使用 先创建一个LV01 lvcreate -L 10G lv01 datavg Logical volume "lv01" created. 将创建出来的LV01进行格式化 mkfs.xxx LV的名称(绝对路径) 绝对路径的组成:/dev/你创建VG的名字/LV的名字 mkfs.xfs /dev/datavg/lv01 挂载你的LV…

mybatis中判断等于字符串的条件怎么写

mybatis中判断等于字符串的条件怎么写_mybatis 等于字符串-CSDN博客 因为mybatis映射文件&#xff0c;是使用的ognl表达式&#xff0c;ognl是java语言&#xff08;强类型语言&#xff09;&#xff0c;会把‘X’解析成字符&#xff0c;而不是字符串。 所以比较字符串相等使用是…

C语言实现绝对值差值函数

在C语言中&#xff0c;可以编写一个函数来计算两个数的差值的绝对值。以下是一个简单的实现&#xff1a; #include <stdio.h> #include <stdlib.h> // 用于abs函数&#xff08;如果需要&#xff09; // 方法1&#xff1a;使用标准库函数 int absoluteDifference1…

Three.js中AR实现详解并详细介绍基于图像标记模式AR生成的详细步骤

文档地址 Three.js中AR实现详解 以下是Three.js中实现AR功能的详细解析&#xff0c;涵盖技术原理、实现步骤、核心组件及优化策略&#xff1a; &#x1f9e9; 一、技术基础 AR.js框架的核心作用 AR.js是Three.js实现AR的基石&#xff0c;提供以下核心能力&#xff1a; 多模…

Vue3.5 企业级管理系统实战(二十三):权限指令

在实际应用场景中&#xff0c;常常需要依据用户角色对按钮的操作权限实施控制。实现这一控制主要有两种方式&#xff1a;一种是借助前端指令基于角色进行权限管控&#xff0c;另一种是通过后台返回对应的权限属性来实现精细化控制。本文聚焦于前端权限指令展开探讨。 1 权限指…

软考 系统架构设计师系列知识点之杂项集萃(81)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;80&#xff09; 第145题 商业智能是企业对商业数据的搜集、管理和分析的系统过程&#xff0c;主要技术包括&#xff08;&#xff09;。 A. 数据仓库、联机分析和数据挖掘 B. 数据采集、数据清洗…

深入浅出Java ParallelStream:高效并行利器还是隐藏的陷阱?

在Java 8带来的众多革新中&#xff0c;Stream API彻底改变了我们对集合操作的方式。而其中最引人注目的特性之一便是parallelStream——它承诺只需简单调用一个方法&#xff0c;就能让数据处理任务自动并行化&#xff0c;充分利用多核CPU的优势。但在美好承诺的背后&#xff0c…

SQL Transactions(事务)、隔离机制

目录 Why Transactions? Example: Bad Interaction Transactions ACID Transactions COMMIT ROLLBACK How the Transaction Log Works How Data Is Stored Example: Interacting Processes Interleaving of Statements Example: Strange Interleaving Fixing the…

第R9周:阿尔茨海默病诊断(优化特征选择版)

文章目录 1. 导入数据2. 数据处理2.1 患病占比2.2 相关性分析2.3 年龄与患病探究 3. 特征选择4. 构建数据集4.1 数据集划分与标准化4.2 构建加载 5. 构建模型6. 模型训练6.1 构建训练函数6.2 构建测试函数6.3 设置超参数 7. 模型训练8. 模型评估8.1 结果图 8.2 混淆矩阵9. 总结…

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…

【大模型】大模型数据训练格式

1. SFT&#xff08;有监督微调&#xff09; 1.1 数据格式 JSONL&#xff08;每行一个 JSON 对象&#xff09;最为流行&#xff1b;也可用 CSV&#xff0f;TSV&#xff0c;但 JSONL 更灵活。字段设计 prompt&#xff1a;用户输入或任务指令&#xff08;通常以“系统指令&#…

[论文阅读] 人工智能 | 利用负信号蒸馏:用REDI框架提升LLM推理能力

【论文速读】利用负信号蒸馏&#xff1a;用REDI框架提升LLM推理能力 论文信息 arXiv:2505.24850 cs.LG cs.AI cs.CL Harnessing Negative Signals: Reinforcement Distillation from Teacher Data for LLM Reasoning Authors: Shuyao Xu, Cheng Peng, Jiangxuan Long, Weidi…

Cursor 1.0正式推出:全面解析你的AI 编程助手

目录 前言 一、BugBot&#xff1a;你的私人代码审查专家 二、Background Agent&#xff1a;7x24小时在线的云端开发伙伴 三、Jupyter Notebook 深度集成&#xff1a;数据科学家的福音 四、记忆功能 (Memories)&#xff1a;让 AI 更懂你的项目 五、MCP 与工具生态&#xf…