Utwórz schemat blokowy C#

Schematy blokowe to potężne narzędzie wizualne do przedstawiania procesów i przepływów pracy. W tym poście na blogu omówimy, jak tworzyć schematy blokowe w języku C#. Niezależnie od tego, czy budujesz złożoną aplikację, czy po prostu potrzebujesz wizualizacji prostego procesu, tworzenie diagramów schematów blokowych może być przydatne, gdy musisz udostępnić informacje zainteresowanym odbiorcom.

Po co tworzyć schematy blokowe?

Tworzenie schematów blokowych jest pomocne z różnych powodów. Na przykład:

Automatyczna dokumentacja: automatycznie generuj schematy blokowe na podstawie kodu lub plików konfiguracyjnych, zapewniając aktualność dokumentacji.

Diagramy dynamiczne: twórz dynamiczne schematy blokowe oparte na danych, które mogą zmieniać się w czasie rzeczywistym w zależności od danych wejściowych użytkownika lub innych zmiennych.

Integracja: osadzaj schematy blokowe w swoich aplikacjach, umożliwiając użytkownikom interakcję i manipulowanie nimi bezpośrednio w oprogramowaniu.

Generator schematów blokowych - Instalacja API C#

Aby wykonać ten samouczek, musisz skonfigurować Visual Studio IDE i przygotować środowisko, instalując Conholdate.Total dla .NET za pomocą poniższego polecenia instalacyjnego NuGet:

PM> NuGet\Install-Package Conholdate.Total

Utwórz schemat blokowy w C#

Możesz nauczyć się tworzyć schemat blokowy w C#, dodając kilka kształtów i łączników:

  • Rozpocznij od utworzenia schematu diagramu blokowego.
  • Załaduj wzorzec, aby dodać kształty przy użyciu klasy Diagram.
  • Dodaj kształty i łączniki zgodnie ze schematem.
  • Uporządkuj układ diagramu blokowego.
  • Na koniec zapisz schemat blokowy jako plik VSDX, korzystając z metody Save.

Przykładowy kod poniżej pokazuje, jak wygenerować schemat blokowy w języku C#:

namespace CreateFlowchart
{
    class Program
    {
        static void Main(string[] args)
        {
            //schemat diagramu, który ma zostać utworzony
            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>();

            //Dodawanie kształtów i łączników ze schematu
            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; }
    }
}

Projekt demonstracyjny

Możesz pobrać działający przykładowy projekt na swój koniec, aby szybko zademonstrować tę funkcję. Co więcej, można go dodatkowo ulepszyć, modyfikując kształty, połączenia, złącza itp. w celu testowania różnych przypadków użycia.

Bezpłatna licencja ewaluacyjna

Możesz otrzymać bezpłatną licencję tymczasową, aby przetestować interfejsy API w pełnym zakresie.

Podsumowując

Programowe tworzenie schematów blokowych w języku C# to skuteczny sposób na automatyzację wizualizacji procesów i przepływów pracy. Za pomocą omawianych klas i wywołań metod można szybko generować dynamiczne i interaktywne schematy blokowe. Mamy nadzieję, że ten samouczek zapewnił Ci solidne podstawy do rozpoczęcia tworzenia własnych schematów blokowych w języku C#. W przypadku jakichkolwiek niejasności prosimy o kontakt na forum.

Często zadawane pytania

Czy mogę tworzyć bardziej złożone schematy blokowe z dodatkowymi kształtami i łącznikami?

Tak, możesz utworzyć dowolną liczbę kształtów i złączy, aby reprezentować dowolny proces.

Czy mogę wyeksportować schemat blokowy do obrazu lub pliku PDF?

Tak, obsługuje eksportowanie schematów blokowych do różnych formatów, w tym obrazów i plików PDF.

Czy mogę dodać niestandardowe kształty do schematu blokowego?

Tak, możesz tworzyć niestandardowe kształty. Dzięki temu możesz tworzyć kształty dostosowane do Twoich konkretnych potrzeb.

Zobacz też