Criar fluxograma em C# .NET

Fluxogramas são criados ou projetados para representar diferentes fluxos de trabalho. Em determinadas situações, pode ser necessário criar fluxogramas para gerenciar diferentes situações. Este artigo aborda como criar um diagrama de fluxograma programaticamente em C#.

Instale a API C# para fazer o diagrama de fluxograma

Você pode fazer diagramas de fluxograma usando a API Aspose.Diagram for .NET. Ele suporta a criação ou edição de arquivos do Visio em VSD, VSDX e outros formatos suportados. Você pode instalar a API facilmente baixando o arquivo DLL da seção New Releases ou usando o NuGet Package Manager com o seguinte comando de instalação:

PM> Install-Package Aspose.Diagram

Faça fluxograma programaticamente em C#

Você pode fazer um fluxograma de diferentes processos conforme suas necessidades. Siga as etapas abaixo para criar fluxogramas:

  1. Em primeiro lugar, crie o esquema para criar o diagrama.
  2. Carregue o mestre para adicionar formas usando a classe Diagram.
  3. Adicionando formas e conectores do esquema.
  4. Defina o layout para o diagrama de fluxograma.
  5. Por fim, grave o arquivo de saída com o fluxograma no formato VSDX usando o método Save.

O trecho de código a seguir elabora como fazer um diagrama de fluxograma programaticamente em C#:

class Program
{
    static void Main(string[] args)
    {
        // esquema para o diagrama a ser criado
        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>();

        //Adicionando formas e conectores do 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; }
}

Baixar Projeto de Amostra

Você pode baixar o projeto de amostra junto com os arquivos de entrada e saída.

Visualização do fluxograma de saída de amostra

Faça fluxograma em C#

Obtenha licença de API gratuita

Você pode avaliar todos os recursos da API sem limitações solicitando uma licença temporária gratuita.

Conclusão

Neste artigo, você aprendeu como criar ou fazer fluxogramas programaticamente usando C#. Você pode projetar diferentes formas, como a decisão, o processo, bem como diferentes layouts, como da esquerda para a direita ou da direita para a esquerda, etc. Além disso, você pode visitar a API documentação para conhecer mais recursos da API. Sinta-se à vontade para entrar em contato conosco no fórum.

Veja também