순서도 만들기 C#

순서도는 프로세스와 작업 흐름을 나타내는 강력한 시각적 도구입니다. 이번 블로그 게시물에서는 C#에서 순서도를 만드는 방법을 살펴보겠습니다. 복잡한 애플리케이션을 구축하거나 간단한 프로세스를 시각화해야 하는 경우, 관련 대상과 정보를 공유해야 할 때 순서도 다이어그램을 만드는 것이 유용할 수 있습니다.

순서도를 만드는 이유는 무엇입니까?

순서도를 만드는 것은 여러 가지 이유로 도움이 됩니다. 예를 들어:

자동화된 문서화: 코드 또는 구성 파일을 기반으로 순서도를 자동으로 생성하여 최신 문서화를 보장합니다.

동적 다이어그램: 사용자 입력이나 기타 변수에 따라 실시간으로 변경될 수 있는 동적 데이터 기반 흐름도를 만듭니다.

통합: 애플리케이션 내에 순서도를 삽입하여 사용자가 소프트웨어 내에서 직접 상호 작용하고 조작할 수 있도록 합니다.

순서도 생성기 - C# API 설치

이 자습서를 따르려면 Visual Studio IDE를 구성하고 아래 NuGet 설치 명령을 사용하여 Conholdate.Total for .NET을 설치하여 환경을 준비해야 합니다.

PM> NuGet\Install-Package Conholdate.Total

C#으로 순서도 만들기

몇 가지 도형과 연결선을 추가하여 C#에서 순서도를 만드는 방법을 배울 수 있습니다.

  • 순서도 다이어그램의 스키마를 생성하는 것부터 시작합니다.
  • Diagram 클래스를 사용하여 모양을 추가하려면 마스터를 로드합니다.
  • 스키마에 따라 모양과 연결선을 추가합니다.
  • 순서도 다이어그램의 레이아웃을 정렬합니다.
  • 마지막으로 Save 메서드를 사용하여 순서도를 VSDX 파일로 저장합니다.

아래 샘플 코드는 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를 포함한 다양한 형식으로 순서도 내보내기를 지원합니다.

순서도에 사용자 정의 모양을 추가할 수 있나요?

예, 사용자 정의 모양을 만들 수 있습니다. 이를 통해 특정 요구 사항에 맞는 모양을 만들 수 있습니다.

또한보십시오