Tạo lưu đồ trong C# .NET

Lưu đồ được tạo hoặc thiết kế để đại diện cho các quy trình công việc khác nhau. Trong một số tình huống nhất định, bạn có thể cần tạo sơ đồ để quản lý các tình huống khác nhau. Bài viết này trình bày cách tạo một sơ đồ lưu đồ theo chương trình trong C#.

Cài đặt API C# để tạo sơ đồ lưu đồ

Bạn có thể tạo sơ đồ lưu đồ bằng cách sử dụng API Aspose.Diagram for .NET. Nó hỗ trợ tạo hoặc chỉnh sửa các tệp Visio trong VSD, VSDX và các định dạng được hỗ trợ khác. Bạn có thể dễ dàng cài đặt API bằng cách tải xuống tệp DLL từ phần Bản phát hành mới hoặc sử dụng Trình quản lý gói NuGet với lệnh cài đặt sau:

PM> Install-Package Aspose.Diagram

Tạo lưu đồ có lập trình trong C#

Bạn có thể lập sơ đồ các quy trình khác nhau theo yêu cầu của mình. Vui lòng làm theo các bước dưới đây để tạo sơ đồ:

  1. Đầu tiên, tạo lược đồ để tạo sơ đồ.
  2. Tải bản gốc để thêm hình dạng bằng cách sử dụng lớp Sơ đồ.
  3. Thêm hình dạng và trình kết nối từ lược đồ.
  4. Đặt bố cục cho sơ đồ lưu đồ.
  5. Cuối cùng, ghi tệp đầu ra với lưu đồ ở định dạng VSDX bằng phương pháp Lưu.

Đoạn mã sau đây trình bày chi tiết cách tạo một sơ đồ lưu đồ theo chương trình trong C#:

class Program
{
    static void Main(string[] args)
    {
        // giản đồ để tạo sơ đồ
        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>();

        //Thêm hình dạng và trình kết nối từ giản đồ
        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; }
}

Tải xuống dự án mẫu

Bạn có thể tải xuống dự án mẫu cùng với các tệp đầu vào và đầu ra.

Xem trước lưu đồ đầu ra mẫu

Tạo lưu đồ trong C#

Nhận giấy phép API miễn phí

Bạn có thể đánh giá tất cả các tính năng của API mà không có bất kỳ giới hạn nào bằng cách yêu cầu giấy phép tạm thời miễn phí.

Sự kết luận

Trong bài viết này, bạn đã học cách tạo hoặc lập lưu đồ theo cách lập trình bằng C#. Bạn có thể thiết kế các hình dạng khác nhau như quyết định, quy trình, cũng như các bố cục khác nhau như từ trái sang phải hoặc từ phải sang trái, v.v. Hơn nữa, bạn có thể truy cập API tài liệu để tìm hiểu thêm các tính năng của API. Vui lòng liên hệ với chúng tôi tại diễn đàn.

Xem thêm