Создать блок-схему C#

Блок-схемы — это мощный визуальный инструмент для представления процессов и рабочих процессов. В этой записи блога мы рассмотрим, как создавать блок-схемы на C#. Независимо от того, создаете ли вы сложное приложение или просто хотите визуализировать простой процесс, создание блок-схем может быть полезно, когда вам нужно поделиться информацией с заинтересованной аудиторией.

Зачем создавать блок-схемы?

Создание блок-схем полезно по разным причинам. Например:

Автоматизированное документирование: автоматически создавайте блок-схемы на основе кода или файлов конфигурации, обеспечивая актуальность документации.

Динамические диаграммы: создавайте динамические блок-схемы, управляемые данными, которые могут изменяться в режиме реального времени в зависимости от ввода пользователя или других переменных.

Интеграция: встраивайте блок-схемы в свои приложения, позволяя пользователям взаимодействовать с ними и манипулировать ими непосредственно в программном обеспечении.

Генератор блок-схем — установка C# API

Чтобы следовать этому руководству, вам необходимо настроить Visual Studio IDE и подготовить среду, установив Conholdate.Total for .NET с помощью команды установки NuGet, приведенной ниже:

PM> NuGet\Install-Package Conholdate.Total

Создать блок-схему на C#

Вы можете научиться создавать блок-схему на C#, добавив несколько фигур и соединителей:

  • Начните с создания схемы блок-схемы.
  • Загрузите мастер, чтобы добавить фигуры, используя класс Diagram.
  • Добавьте фигуры и соединители согласно схеме.
  • Организуйте макет блок-схемы.
  • Наконец, сохраните блок-схему как файл VSDX, используя метод Save.

В приведенном ниже примере кода показано, как создать блок-схему на C#:

namespace CreateFlowchart
{
    class Program
    {
        static void Main(string[] args)
        {
            //схема для диаграммы, которая будет создана
            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>();

            //Добавление фигур и соединителей из схемы
            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; }
    }
}

Демо-проект

Вы можете скачать рабочий пример проекта со своей стороны, чтобы быстро продемонстрировать эту функцию. Более того, его можно дополнительно улучшить, изменив формы, соединения, разъемы и т. д. для тестирования различных вариантов использования.

Бесплатная пробная лицензия

Вы можете получить бесплатную временную лицензию для тестирования API на полную мощность.

Подведение итогов

Программное создание блок-схем на C# — это мощный способ автоматизации визуализации процессов и рабочих процессов. С помощью закрытых классов и вызовов методов вы можете быстро создавать динамические и интерактивные блок-схемы. Мы надеемся, что это руководство предоставило вам прочную основу для создания собственных блок-схем на C#. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на форум.

Часто задаваемые вопросы

Могу ли я создавать более сложные блок-схемы с дополнительными фигурами и соединителями?

Да, вы можете создать столько фигур и соединителей, сколько необходимо для представления любого процесса.

Могу ли я экспортировать блок-схему в изображение или PDF?

Да, он поддерживает экспорт блок-схем в различные форматы, включая изображения и PDF-файлы.

Могу ли я добавить собственные фигуры в блок-схему?

Да, вы можете создавать собственные формы. Это позволяет создавать формы, соответствующие вашим конкретным потребностям.

Смотрите также