สร้างผังงาน C#

ผังงานเป็นเครื่องมือภาพที่มีประสิทธิภาพสำหรับการนำเสนอกระบวนการและเวิร์กโฟลว์ ในบล็อกโพสต์นี้ เราจะสำรวจวิธีสร้างผังงานใน C# ไม่ว่าคุณกำลังสร้างแอปพลิเคชันที่ซับซ้อนหรือเพียงต้องการเห็นภาพกระบวนการง่ายๆ การสร้างไดอะแกรมผังงานจะมีประโยชน์เมื่อคุณต้องการแบ่งปันข้อมูลกับผู้ชมที่เกี่ยวข้อง

ทำไมต้องสร้างผังงาน?

การสร้างผังงานมีประโยชน์ด้วยเหตุผลหลายประการ ตัวอย่างเช่น:

การจัดทำเอกสารอัตโนมัติ: สร้างผังงานโดยอัตโนมัติตามโค้ดหรือไฟล์การกำหนดค่า เพื่อให้มั่นใจว่าเอกสารเป็นปัจจุบัน

ไดอะแกรมแบบไดนามิก: สร้างผังงานแบบไดนามิกที่ขับเคลื่อนด้วยข้อมูลซึ่งสามารถเปลี่ยนแปลงได้แบบเรียลไทม์ตามอินพุตของผู้ใช้หรือตัวแปรอื่น ๆ

การบูรณาการ: ฝังผังงานภายในแอปพลิเคชันของคุณ ช่วยให้ผู้ใช้สามารถโต้ตอบและจัดการผังงานเหล่านั้นได้โดยตรงภายในซอฟต์แวร์

Flowchart Generator - การติดตั้ง C# API

หากต้องการปฏิบัติตามบทช่วยสอนนี้ คุณจะต้องกำหนดค่า Visual Studio IDE และเตรียมสภาพแวดล้อมโดยการติดตั้ง Conholdate.Total for .NET ด้วยคำสั่งการติดตั้ง NuGet ด้านล่าง:

PM> NuGet\Install-Package Conholdate.Total

สร้างผังงานใน C#

คุณสามารถเรียนรู้การสร้างผังงานใน C# ได้โดยการเพิ่มรูปร่างและตัวเชื่อมต่อ:

  • เริ่มต้นด้วยการสร้างสคีมาสำหรับไดอะแกรมผังงาน
  • โหลดต้นแบบเพื่อเพิ่มรูปร่างโดยใช้คลาส Diagram
  • เพิ่มรูปร่างและตัวเชื่อมต่อตามสคีมา
  • จัดเรียงเค้าโครงสำหรับแผนภาพผังงาน
  • สุดท้าย ให้บันทึกผังงานเป็นไฟล์ 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

ฉันสามารถเพิ่มรูปร่างที่กำหนดเองลงในผังงานได้หรือไม่

ใช่ คุณสามารถสร้างรูปร่างแบบกำหนดเองได้ สิ่งนี้ช่วยให้คุณสร้างรูปร่างที่ปรับให้เหมาะกับความต้องการเฉพาะของคุณได้

ดูสิ่งนี้ด้วย