在C#中制作流程图有多种实现方式,以下提供两种主流方案及其实现步骤:
方案一:使用WinForms/WPF绘制基础流程图
// WinForms 示例
using System.Drawing;
using System.Windows.Forms;
public class FlowChartForm : Form
{
public FlowChartForm()
{
// 创建画布
var canvas = new Panel { Dock = DockStyle.Fill };
canvas.Paint += (s, e) => DrawFlowChart(e.Graphics);
Controls.Add(canvas);
}
private void DrawFlowChart(Graphics g)
{
// 定义节点样式
var nodeBrush = new SolidBrush(Color.LightBlue);
var textBrush = new SolidBrush(Color.Black);
var pen = new Pen(Color.Black, 2);
// 绘制开始节点
g.FillEllipse(nodeBrush, 100, 50, 80, 40);
g.DrawString("开始", Font, textBrush, 125, 60);
// 绘制处理节点
g.FillRectangle(nodeBrush, 90, 120, 100, 40);
g.DrawString("处理数据", Font, textBrush, 105, 130);
// 绘制判断节点
Point[] diamond = { new(140, 190), new(170, 210), new(140, 230), new(110, 210) };
g.FillPolygon(nodeBrush, diamond);
g.DrawString("判断", Font, textBrush, 125, 205);
// 绘制连接线
g.DrawLine(pen, 140, 90, 140, 120); // 开始→处理
g.DrawLine(pen, 140, 160, 140, 190); // 处理→判断
}
}
// 启动应用
Application.Run(new FlowChartForm());
方案二:使用专业库(推荐)
使用Microsoft Automatic Graph Layout (MSAGL)
-
安装NuGet包:
Install-Package Microsoft.Msagl.Drawing -Version 1.0.0 Install-Package Microsoft.Msagl.GraphViewerGDI -Version 1.0.0 -
核心代码:
using Microsoft.Msagl.Drawing;
using Microsoft.Msagl.GraphViewerGdi;
public void CreateFlowChart()
{
// 创建图结构
var graph = new Graph("流程图");
// 添加节点
var start = graph.AddNode("开始");
start.Attr.Shape = Shape.Ellipse;
start.Attr.FillColor = Color.LightGreen;
var process = graph.AddNode("处理");
process.Attr.Shape = Shape.Box;
var decision = graph.AddNode("判断");
decision.Attr.Shape = Shape.Diamond;
decision.Attr.FillColor = Color.LightYellow;
// 添加连接线
graph.AddEdge("开始", "处理").Attr.ArrowheadAtTarget = ArrowStyle.Normal;
graph.AddEdge("处理", "判断").Attr.ArrowheadAtTarget = ArrowStyle.Normal;
// 渲染到窗体
var viewer = new GViewer();
viewer.Graph = graph;
var form = new Form();
form.SuspendLayout();
viewer.Dock = DockStyle.Fill;
form.Controls.Add(viewer);
form.ResumeLayout();
form.ShowDialog();
}
方案选择建议
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 原生绘制 | 简单流程图/少量节点 | 零依赖,完全控制样式 | 布局逻辑需手动实现 |
| MSAGL库 | 复杂流程图/自动布局 | 自动排版,支持高级功能 | 需要学习API |
| 第三方控件库 | 企业级应用/快速开发 | 丰富交互功能,拖拽设计 | 商业授权费用 |
进阶方案
对于Web应用,可结合:
- ASP.NET Core + Blazor + mermaid.js(声明式流程图)
- MVC + Flowchart.js(交互式流程图)
<!-- Blazor中集成mermaid示例 -->
<Mermaid ChartDefinition="graph TD
A[开始] --> B[处理数据]
B --> C{判断条件}
C -->|是| D[执行操作]
C -->|否| E[结束]" />
注意事项:
- 复杂流程图建议使用MSAGL或专业工具(如Visio)
- 动态流程图需实现节点坐标计算算法
- 企业级应用推荐Syncfusion或Telerik等商业控件库
- Web方案优先选择JavaScript图表库(D3.js/GoJS)

927

被折叠的 条评论
为什么被折叠?



