Crear diagrama de flujo C#

Los diagramas de flujo son una poderosa herramienta visual para representar procesos y flujos de trabajo. En esta publicación de blog, exploraremos cómo crear diagramas de flujo en C#. Ya sea que esté creando una aplicación compleja o simplemente necesite visualizar un proceso simple, la creación de diagramas de flujo puede ser útil cuando necesita compartir información con la audiencia interesada.

¿Por qué crear diagramas de flujo?

Hacer diagramas de flujo es útil por diferentes razones. Por ejemplo:

Documentación automatizada: genere automáticamente diagramas de flujo basados en código o archivos de configuración, asegurando una documentación actualizada.

Diagramas dinámicos: cree diagramas de flujo dinámicos basados en datos que puedan cambiar en tiempo real según la entrada del usuario u otras variables.

Integración: incorpore diagramas de flujo dentro de sus aplicaciones, permitiendo a los usuarios interactuar con ellos y manipularlos directamente dentro del software.

Generador de diagramas de flujo: instalación de API de C#

Para seguir este tutorial, necesita configurar Visual Studio IDE y preparar el entorno instalando Conholdate.Total para .NET con el siguiente comando de instalación de NuGet:

PM> NuGet\Install-Package Conholdate.Total

Hacer diagrama de flujo en C#

Puede aprender a crear un diagrama de flujo en C# agregando algunas formas y conectores:

  • Comience creando el esquema para el diagrama de flujo.
  • Cargue el maestro para agregar formas usando la clase Diagrama.
  • Añade formas y conectores según el esquema.
  • Organice el diseño del diagrama de flujo.
  • Por último, guarde el diagrama de flujo como un archivo VSDX usando el método Guardar.

El siguiente código de muestra muestra cómo generar un diagrama de flujo en C#:

namespace CreateFlowchart
{
    class Program
    {
        static void Main(string[] args)
        {
            //esquema para el diagrama que se va 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>();

            //Agregar 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; }
    }
}

Proyecto de demostración

Puede descargar el proyecto de muestra en funcionamiento para obtener una demostración rápida de la función. Además, se puede mejorar aún más modificando las formas, conexiones, conectores, etc. para probar diferentes casos de uso.

Licencia de evaluación gratuita

Puede obtener una licencia temporal gratuita para probar las API a su máxima capacidad.

Resumiendo

Crear diagramas de flujo mediante programación en C# es una forma poderosa de automatizar la visualización de procesos y flujos de trabajo. Con la ayuda de clases cubiertas y llamadas a métodos, puede generar rápidamente diagramas de flujo dinámicos e interactivos. Esperamos que este tutorial le haya proporcionado una base sólida para comenzar a crear sus propios diagramas de flujo en C#. En caso de cualquier ambigüedad, comuníquese con nosotros en foro.

Preguntas frecuentes

¿Puedo crear diagramas de flujo más complejos con formas y conectores adicionales?

Sí, puedes crear tantas formas y conectores como necesites para representar cualquier proceso.

¿Puedo exportar el diagrama de flujo a una imagen o PDF?

Sí, admite la exportación de diagramas de flujo a varios formatos, incluidas imágenes y archivos PDF.

¿Puedo agregar formas personalizadas al diagrama de flujo?

Sí, puedes crear formas personalizadas. Esto le permite crear formas que se adaptan a sus necesidades específicas.

Ver también