Skapa flödesschema i C# .NET

Flödesscheman skapas eller utformas för att representera olika arbetsflöden. I vissa situationer kan du behöva skapa flödesscheman för att hantera olika situationer. Den här artikeln tar upp hur man skapar ett flödesschema programmatiskt i C#.

Installera C# API för att skapa flödesdiagram

Du kan skapa flödesscheman genom att använda Aspose.Diagram for .NET API. Det stöder att skapa eller redigera Visio-filer i VSD, VSDX och andra format som stöds. Du kan enkelt installera API:t genom att ladda ner DLL-filen från avsnittet New Releases eller använda NuGet Package Manager med följande installationskommando:

PM> Install-Package Aspose.Diagram

Gör flödesschema programmatiskt i C#

Du kan göra ett flödesschema över olika processer enligt dina krav. Följ stegen nedan för att skapa flödesscheman:

  1. Skapa först schemat för att skapa diagrammet.
  2. Ladda mastern för att lägga till former med klassen Diagram.
  3. Lägga till former och kopplingar från schemat.
  4. Ställ in layout för flödesdiagrammet.
  5. Skriv slutligen utdatafilen med flödesschema i VSDX-format med metoden Spara.

Följande kodsnutt utvecklar hur man gör ett flödesdiagram programmatiskt i C#:

class Program
{
    static void Main(string[] args)
    {
        // schema för diagrammet som ska skapas
        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>();

        //Lägga till former och kopplingar från schemat
        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; }
}

Ladda ner exempelprojekt

Du kan ladda ner exempelprojektet tillsammans med in- och utdatafilerna.

Exempel på flödesschema för utdata

Gör flödesschema i C#

Få gratis API-licens

Du kan utvärdera alla funktioner i API:t utan några begränsningar genom att begära en gratis temporär licens.

Slutsats

I den här artikeln har du lärt dig hur du skapar eller gör flödesscheman programmatiskt med C#. Du kan designa olika former som beslut, process, såväl som olika layouter som vänster till höger eller höger till vänster, etc. Dessutom kan du besöka API dokumentation för att lära dig fler funktioner i API. Kontakta oss gärna på forumet.

Se även