Crea diagramma di flusso C#

I diagrammi di flusso sono un potente strumento visivo per rappresentare processi e flussi di lavoro. In questo post del blog esploreremo come creare diagrammi di flusso in C#. Che tu stia creando un’applicazione complessa o semplicemente desideri visualizzare un processo semplice, la creazione di diagrammi di flusso può essere utile quando devi condividere informazioni con il pubblico interessato.

Perché creare diagrammi di flusso?

Creare diagrammi di flusso è utile per diversi motivi. Per esempio:

Documentazione automatizzata: genera automaticamente diagrammi di flusso basati su codice o file di configurazione, garantendo una documentazione aggiornata.

Diagrammi dinamici: crea diagrammi di flusso dinamici e basati sui dati che possono cambiare in tempo reale in base all’input dell’utente o ad altre variabili.

Integrazione: incorpora diagrammi di flusso nelle tue applicazioni, consentendo agli utenti di interagire e manipolarli direttamente all’interno del software.

Generatore di diagrammi di flusso: installazione dell’API C#

Per seguire questo tutorial, è necessario configurare l’IDE di Visual Studio e preparare l’ambiente installando Conholdate.Total for .NET con il comando di installazione NuGet riportato di seguito:

PM> NuGet\Install-Package Conholdate.Total

Crea diagramma di flusso in C#

Puoi imparare a creare un diagramma di flusso in C# aggiungendo alcune forme e connettori:

  • Inizia creando lo schema per il diagramma del diagramma di flusso.
  • Carica il master per aggiungere forme utilizzando la classe Diagram.
  • Aggiungi forme e connettori secondo lo schema.
  • Organizzare il layout per il diagramma del diagramma di flusso.
  • Infine, salva il diagramma di flusso come file VSDX utilizzando il metodo Salva.

Il codice di esempio seguente mostra come generare un diagramma di flusso in C#:

namespace CreateFlowchart
{
    class Program
    {
        static void Main(string[] args)
        {
            //schema per il diagramma da creare
            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>();

            //Aggiunta di forme e connettori dallo schema
            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; }
    }
}

Progetto dimostrativo

Puoi scaricare il progetto di esempio funzionante sul tuo dispositivo per una rapida dimostrazione della funzionalità. Inoltre, può essere ulteriormente migliorato modificando forme, connessioni, connettori, ecc. per testare diversi casi d’uso.

Licenza di valutazione gratuita

Potresti ottenere una licenza temporanea gratuita per testare le API al massimo delle loro capacità.

Riassumendo

La creazione di diagrammi di flusso a livello di codice in C# è un modo efficace per automatizzare la visualizzazione di processi e flussi di lavoro. Con l’aiuto delle classi coperte e delle chiamate ai metodi, puoi generare rapidamente diagrammi di flusso dinamici e interattivi. Ci auguriamo che questo tutorial ti abbia fornito una solida base per iniziare a creare i tuoi diagrammi di flusso in C#. In caso di ambiguità, contattaci al forum.

Domande frequenti

Posso creare diagrammi di flusso più complessi con forme e connettori aggiuntivi?

Sì, puoi creare tutte le forme e i connettori necessari per rappresentare qualsiasi processo.

Posso esportare il diagramma di flusso in un’immagine o in un PDF?

Sì, supporta l’esportazione dei diagrammi di flusso in vari formati, inclusi immagini e PDF.

Posso aggiungere forme personalizzate al diagramma di flusso?

Sì, puoi creare forme personalizzate. Ciò ti consente di creare forme su misura per le tue esigenze specifiche.

Guarda anche