Crear diagrama de flujo en C# .NET

Los diagramas de flujo se crean o diseñan para representar diferentes flujos de trabajo. En determinadas situaciones, es posible que deba crear diagramas de flujo para gestionar diferentes situaciones. Este artículo cubre cómo crear un diagrama de flujo mediante programación en C#.

Instale la API de C# para hacer un diagrama de flujo

Puede crear diagramas de diagrama de flujo utilizando la API Aspose.Diagram for .NET. Admite la creación o edición de archivos de Visio en VSD, VSDX y otros formatos admitidos. Puede instalar fácilmente la API descargando el archivo DLL desde la sección Nuevos lanzamientos, o usando el Administrador de paquetes NuGet con el siguiente comando de instalación:

PM> Install-Package Aspose.Diagram

Hacer un diagrama de flujo programáticamente en C#

Puede hacer un diagrama de flujo de diferentes procesos según sus requisitos. Siga los pasos a continuación para crear diagramas de flujo:

  1. En primer lugar, cree el esquema para crear el diagrama.
  2. Cargue el maestro para agregar formas usando la clase Diagram.
  3. Adición de formas y conectores desde el esquema.
  4. Establecer el diseño para el diagrama de flujo.
  5. Finalmente, escriba el archivo de salida con el diagrama de flujo en formato VSDX usando el método Save.

El siguiente fragmento de código explica cómo hacer un diagrama de flujo mediante programación en C#:

class Program
{
    static void Main(string[] args)
    {
        // esquema para el diagrama a crear
        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>();

        //Adición de formas y conectores desde el esquema
        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; }
}

Descargar proyecto de muestra

Puede descargar el proyecto de muestra junto con los archivos de entrada y salida.

Vista previa del diagrama de flujo de salida de muestra

Hacer un diagrama de flujo en C#

Obtenga una licencia de API gratuita

Puede evaluar todas las funciones de la API sin limitaciones solicitando una licencia temporal gratuita.

Conclusión

En este artículo, ha aprendido a crear o hacer diagramas de flujo mediante programación usando C#. Puede diseñar diferentes formas como la decisión, el proceso, así como diferentes diseños como de izquierda a derecha o de derecha a izquierda, etc. Además, puede visitar la documentación de la API para conocer más características de la API. No dude en comunicarse con nosotros en el foro.

Ver también