在 C# .NET 中创建流程图

流程图 被创建或设计为代表不同的工作流程。在某些情况下,您可能需要创建流程图来管理不同的情况。本文介绍如何在 C# 中以编程方式创建流程图。

安装 C# API 制作流程图

您可以使用 Aspose.Diagram for .NET API 制作流程图。它支持以 VSD、VSDX 和 其他支持的格式 创建或编辑 Visio 文件。您可以通过从 New Releases 部分下载 DLL 文件或使用 NuGet 包管理器和以下安装命令轻松安装 API:

PM> Install-Package Aspose.Diagram

在 C# 中以编程方式制作流程图

您可以根据您的要求制作不同流程的流程图。请按照以下步骤创建流程图:

  1. 首先,创建用于创建图表的模式。
  2. 使用 Diagram 类加载用于添加形状的母版。
  3. 从架构中添加形状和连接器。
  4. 设置流程图的布局。
  5. 最后,使用 Save 方法以 VSDX 格式编写带有流程图的输出文件。

以下代码片段详细说明了如何在 C# 中以编程方式制作流程图:

class Program
{
    static void Main(string[] args)
    {
        // 要创建的图表的架构
        Input diagramObject = new Input()
        {
            InputRectangles = new List<InputRectangle>() {
                    new InputRectangle() {
                        Name = "A",
                        Text = "Manager"
                    },
                    new InputRectangle() {
                        Name = "B",
                        Text = "Team Leader"
                    },
                    new InputRectangle() {
                        Name = "C",
                        Text = "Team Member"
                    },
                    new InputRectangle() {
                        Name = "D",
                        Text = "Team Member"
                    },
                    new InputRectangle() {
                        Name = "E",
                        Text = "Team Member"
                    }
                },
            InputConnectors = new List<InputConnector>() {
                    new InputConnector() {
                        OriginShapeName = "A",
                        DestinationShapeName = "B"
                    },
                    new InputConnector() {
                        OriginShapeName = "B",
                        DestinationShapeName = "C"
                    },
                    new InputConnector() {
                        OriginShapeName = "B",
                        DestinationShapeName = "D"
                    },
                    new InputConnector() {
                        OriginShapeName = "B",
                        DestinationShapeName = "E"
                    }
                }
        };

        Diagram diagram = new Diagram("BasicShapes.vss");
        Page page = diagram.Pages[0];

        Dictionary<string, long> shapeNames = new Dictionary<string, long>();

        //从架构中添加形状和连接器
        foreach (var rectangle in diagramObject.InputRectangles)
        {
            Shape shape = new Shape();
            var shapeId = diagram.AddShape(shape, @"Rectangle", 0);
            shapeNames.Add(rectangle.Name, shapeId);
            shape = page.Shapes.GetShape(shapeId);
            shape.Text.Value.Add(new Txt(rectangle.Text));
        }


        foreach (var connector in diagramObject.InputConnectors)
        {
            var connectorId = diagram.AddShape(new Shape(), "Dynamic connector", 0);
            page.ConnectShapesViaConnector(shapeNames[connector.OriginShapeName],
                                            ConnectionPointPlace.Right,
                                            shapeNames[connector.DestinationShapeName],
                                            ConnectionPointPlace.Left,
                                            connectorId);
        }


        LayoutOptions layoutOptions = new LayoutOptions()
        {
            LayoutStyle = LayoutStyle.FlowChart,
            Direction = LayoutDirection.LeftToRight,
            SpaceShapes = 5,
            EnlargePage = true
        };

        diagram.Layout(layoutOptions);

        page.PageSheet.PrintProps.PrintPageOrientation.Value = PrintPageOrientationValue.Landscape;

        DiagramSaveOptions saveOptions = new DiagramSaveOptions()
        {
            SaveFormat = SaveFileFormat.Vsdx,
            AutoFitPageToDrawingContent = true
        };

        diagram.Save("output.vsdx", saveOptions);
    }
}

public class Input
{
    public System.Collections.Generic.List<InputRectangle> InputRectangles { get; set; }
    public System.Collections.Generic.List<InputConnector> InputConnectors { get; set; }
}

public class InputRectangle
{
    public string Name { get; set; }
    public string Text { get; set; }
}

public class InputConnector
{
    public string OriginShapeName { get; set; }
    public string DestinationShapeName { get; set; }
}

下载示例项目

您可以下载 示例项目 以及输入和输出文件。

示例输出流程图预览

用 C# 制作流程图

获取免费 API 许可证

您可以通过申请 免费临时许可证 来不受任何限制地评估 API 的所有功能。

结论

在本文中,您学习了如何使用 C# 以编程方式创建或制作流程图。您可以设计不同的形状,如决策、流程,以及不同的布局,如从左到右或从右到左等。此外,您可以访问 API 文档 以了解 API 的更多功能。请随时通过 论坛 与我们联系。

也可以看看