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
繁體地址,請注明出處:http://hk.pswp.cn/diannao/85991.shtml
英文地址,請注明出處:http://en.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…