Criar Fluxograma C#

Os fluxogramas são uma ferramenta visual poderosa para representar processos e fluxos de trabalho. Nesta postagem do blog, exploraremos como criar fluxogramas em C#. Esteja você construindo um aplicativo complexo ou apenas precise visualizar um processo simples, a criação de diagramas de fluxograma pode ser útil quando você precisar compartilhar informações com o público em questão.

Por que criar fluxogramas?

Criar fluxogramas é útil por diversos motivos. Por exemplo:

Documentação Automatizada: Gere fluxogramas automaticamente com base em código ou arquivos de configuração, garantindo documentação atualizada.

Diagramas Dinâmicos: Crie fluxogramas dinâmicos baseados em dados que podem mudar em tempo real com base na entrada do usuário ou em outras variáveis.

Integração: incorpore fluxogramas em seus aplicativos, permitindo que os usuários interajam e manipulem-nos diretamente no software.

Gerador de fluxograma - instalação da API C#

Para seguir este tutorial, você precisa configurar o IDE do Visual Studio e preparar o ambiente instalando Conholdate.Total for .NET com o comando de instalação do NuGet abaixo:

PM> NuGet\Install-Package Conholdate.Total

Faça fluxograma em C#

Você pode aprender a criar um fluxograma em C# adicionando algumas formas e conectores:

  • Comece criando o esquema para o diagrama de fluxograma.
  • Carregue o mestre para adicionar formas usando a classe Diagram.
  • Adicione formas e conectores de acordo com o esquema.
  • Organize o layout do diagrama de fluxograma.
  • Por último, salve o fluxograma como um arquivo VSDX usando o método Save.

O código de exemplo abaixo mostra como gerar um fluxograma em C#:

namespace CreateFlowchart
{
    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; }
    }
}

Projeto de demonstração

Você pode baixar o projeto de amostra funcional para uma rápida demonstração do recurso. Além disso, pode ser aprimorado ainda mais modificando as formas, conexões, conectores, etc. para testar diferentes casos de uso.

Licença de avaliação gratuita

Você pode obter uma licença temporária gratuita para testar a capacidade total das APIs.

Resumindo

Criar fluxogramas programaticamente em C# é uma maneira poderosa de automatizar a visualização de processos e fluxos de trabalho. Com a ajuda das classes cobertas e chamadas de método, você pode gerar rapidamente fluxogramas dinâmicos e interativos. Esperamos que este tutorial tenha fornecido uma base sólida para começar a criar seus próprios fluxogramas em C#. Em caso de qualquer ambigüidade, entre em contato conosco em fórum.

Perguntas frequentes

Posso criar fluxogramas mais complexos com formas e conectores adicionais?

Sim, você pode criar quantas formas e conectores forem necessários para representar qualquer processo.

Posso exportar o fluxograma para uma imagem ou PDF?

Sim, suporta a exportação de fluxogramas para vários formatos, incluindo imagens e PDFs.

Posso adicionar formas personalizadas ao fluxograma?

Sim, você pode criar formas personalizadas. Isso permite que você crie formas adaptadas às suas necessidades específicas.

Veja também