Maak stroomdiagram C#

Stroomdiagrammen zijn een krachtig visueel hulpmiddel voor het weergeven van processen en workflows. In deze blogpost onderzoeken we hoe u stroomdiagrammen kunt maken in C#. Of u nu een complexe applicatie bouwt of gewoon een eenvoudig proces wilt visualiseren, het maken van stroomdiagrammen kan handig zijn wanneer u informatie met het betrokken publiek wilt delen.

Waarom stroomdiagrammen maken?

Het maken van stroomdiagrammen is om verschillende redenen nuttig. Bijvoorbeeld:

Geautomatiseerde documentatie: Genereer automatisch stroomdiagrammen op basis van code- of configuratiebestanden, zodat u verzekerd bent van up-to-date documentatie.

Dynamische diagrammen: Creëer dynamische, datagestuurde stroomdiagrammen die in realtime kunnen veranderen op basis van gebruikersinvoer of andere variabelen.

Integratie: Sluit stroomdiagrammen in uw applicaties in, zodat gebruikers er rechtstreeks in de software mee kunnen communiceren en deze kunnen manipuleren.

Stroomdiagramgenerator - C# API-installatie

Om deze tutorial te volgen, moet u Visual Studio IDE configureren en de omgeving voorbereiden door Conholdate.Total for .NET te installeren met de onderstaande NuGet-installatieopdracht:

PM> NuGet\Install-Package Conholdate.Total

Maak een stroomdiagram in C#

U kunt leren een stroomdiagram te maken in C# door een paar vormen en connectoren toe te voegen:

  • Begin met het maken van het schema voor het stroomdiagram.
  • Laad het model om vormen toe te voegen met behulp van de klasse Diagram.
  • Voeg vormen en connectoren toe volgens het schema.
  • Regel de lay-out voor het stroomdiagram.
  • Sla ten slotte het stroomdiagram op als een VSDX-bestand met behulp van de Save-methode.

De onderstaande voorbeeldcode laat zien hoe u een stroomdiagram genereert in C#:

namespace CreateFlowchart
{
    class Program
    {
        static void Main(string[] args)
        {
            //schema voor het te maken diagram
            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>();

            //Vormen en connectoren toevoegen vanuit het 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; }
    }
}

Demoproject

U kunt het werkende voorbeeldproject aan uw kant downloaden voor een snelle demonstratie van de functie. Bovendien kan het verder worden verbeterd door de vormen, verbindingen, connectoren, enz. aan te passen voor het testen van verschillende gebruiksscenario’s.

Gratis evaluatielicentie

Mogelijk krijgt u een gratis tijdelijke licentie om de API’s optimaal te testen.

Opsommen

Het programmatisch maken van stroomdiagrammen in C# is een krachtige manier om de visualisatie van processen en workflows te automatiseren. Met behulp van de behandelde klassen en methodeaanroepen kunt u snel dynamische en interactieve stroomdiagrammen genereren. We hopen dat deze tutorial je een solide basis heeft gegeven om te beginnen met het maken van je eigen stroomdiagrammen in C#. In geval van onduidelijkheid kunt u contact met ons opnemen via forum.

Veelgestelde vragen

Kan ik complexere stroomdiagrammen maken met extra vormen en verbindingslijnen?

Ja, u kunt zoveel vormen en verbindingsstukken maken als nodig is om elk proces weer te geven.

Kan ik het stroomdiagram exporteren naar een afbeelding of PDF?

Ja, het ondersteunt het exporteren van stroomdiagrammen naar verschillende formaten, inclusief afbeeldingen en PDF’s.

Kan ik aangepaste vormen aan het stroomdiagram toevoegen?

Ja, u kunt aangepaste vormen maken. Hierdoor kunt u vormen creëren die zijn afgestemd op uw specifieke behoeften.

Zie ook