Erstellen Sie ein Flussdiagramm in C# .NET

Flussdiagramme werden erstellt oder entworfen, um verschiedene Arbeitsabläufe darzustellen. In bestimmten Situationen müssen Sie möglicherweise Flussdiagramme erstellen, um verschiedene Situationen zu bewältigen. In diesem Artikel wird beschrieben, wie Sie ein Flussdiagramm programmgesteuert in C# erstellen.

Installieren Sie die C#-API, um ein Flussdiagramm zu erstellen

Sie können Flussdiagramme erstellen, indem Sie die API Aspose.Diagram for .NET verwenden. Es unterstützt das Erstellen oder Bearbeiten von Visio-Dateien in VSD, VSDX und anderen unterstützten Formaten. Sie können die API ganz einfach installieren, indem Sie die DLL-Datei aus dem Abschnitt New Releases herunterladen oder den Paket-Manager NuGet mit dem folgenden Installationsbefehl verwenden:

PM> Install-Package Aspose.Diagram

Programmgesteuertes Erstellen von Flussdiagrammen in C#

Sie können ein Flussdiagramm verschiedener Prozesse gemäß Ihren Anforderungen erstellen. Bitte führen Sie die folgenden Schritte aus, um Flussdiagramme zu erstellen:

  1. Erstellen Sie zunächst das Schema zum Erstellen des Diagramms.
  2. Laden Sie den Master zum Hinzufügen von Formen mit der Klasse Diagram.
  3. Formen und Konnektoren aus dem Schema hinzufügen.
  4. Legen Sie das Layout für das Flussdiagramm fest.
  5. Schreiben Sie schließlich die Ausgabedatei mit dem Flussdiagramm im VSDX-Format mit der Methode Save.

Das folgende Code-Snippet erläutert, wie ein Flussdiagramm programmgesteuert in C# erstellt wird:

class Program
{
    static void Main(string[] args)
    {
        // Schema für das zu erstellende Diagramm
        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>();

        //Formen und Konnektoren aus dem Schema hinzufügen
        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; }
}

Beispielprojekt herunterladen

Sie können das Beispielprojekt zusammen mit den Eingabe- und Ausgabedateien herunterladen.

Vorschau des Beispielausgabe-Flussdiagramms

Erstellen Sie ein Flussdiagramm in C#

Erhalten Sie eine kostenlose API-Lizenz

Sie können alle Funktionen der API ohne Einschränkungen testen, indem Sie eine kostenlose temporäre Lizenz anfordern.

Fazit

In diesem Artikel haben Sie gelernt, wie Sie Flussdiagramme programmgesteuert mit C# erstellen oder erstellen. Sie können verschiedene Formen wie die Entscheidung, den Prozess sowie verschiedene Layouts wie von links nach rechts oder von rechts nach links usw. entwerfen. Außerdem können Sie die API Dokumentation besuchen, um weitere Funktionen der API zu erfahren. Bitte zögern Sie nicht, uns im Forum zu kontaktieren.

Siehe auch