Akış Şeması Oluşturma C#

Akış şemaları, süreçleri ve iş akışlarını temsil etmek için güçlü bir görsel araçtır. Bu blog yazısında C#’ta akış şemalarının nasıl oluşturulacağını inceleyeceğiz. İster karmaşık bir uygulama oluşturuyor olun, ister yalnızca basit bir süreci görselleştirmeye ihtiyaç duyuyor olun, bilgileri ilgili hedef kitleyle paylaşmanız gerektiğinde akış şeması diyagramları oluşturmak yararlı olabilir.

Neden Akış Şemaları Oluşturmalısınız?

Akış şemaları oluşturmak farklı nedenlerden dolayı faydalıdır. Örneğin:

Otomatik Dokümantasyon: Kod veya konfigürasyon dosyalarına dayalı olarak akış şemalarını otomatik olarak oluşturarak güncel dokümantasyonu sağlayın.

Dinamik Diyagramlar: Kullanıcı girdisine veya diğer değişkenlere göre gerçek zamanlı olarak değişebilen dinamik, veri odaklı akış şemaları oluşturun.

Entegrasyon: Uygulamalarınıza akış şemaları yerleştirerek kullanıcıların bunlarla doğrudan yazılım içinde etkileşim kurmasına ve bunları yönetmesine olanak tanıyın.

Akış Şeması Oluşturucu - C# API Kurulumu

Bu öğreticiyi takip etmek için Visual Studio IDE’yi yapılandırmanız ve aşağıdaki NuGet yükleme komutuyla Conholdate.Total for .NET‘i yükleyerek ortamı hazırlamanız gerekir:

PM> NuGet\Install-Package Conholdate.Total

C#’ta Akış Şeması Oluşturun

Birkaç şekil ve bağlayıcı ekleyerek C#’ta akış şeması oluşturmayı öğrenebilirsiniz:

  • Akış şeması diyagramı için şema oluşturarak başlayın.
  • Diagram sınıfını kullanarak şekil eklemek için ana programı yükleyin.
  • Şemaya göre şekiller ve bağlayıcılar ekleyin.
  • Akış şeması diyagramının düzenini düzenleyin.
  • Son olarak akış şemasını Save yöntemini kullanarak VSDX dosyası olarak kaydedin.

Aşağıdaki örnek kod, C#’ta bir akış şemasının nasıl oluşturulacağını gösterir:

namespace CreateFlowchart
{
    class Program
    {
        static void Main(string[] args)
        {
            //Diyagramın oluşturulacağı şema
            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>();

            //Şemadan şekiller ve bağlayıcılar ekleme
            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; }
    }
}

Demo Projesi

Özelliğin hızlı bir şekilde gösterilmesi için çalışan örnek projeyi kendi tarafınızdan indirebilirsiniz. Ayrıca farklı kullanım durumlarını test etmek için şekiller, bağlantılar, konektörler vb. değiştirilerek daha da geliştirilebilir.

Ücretsiz Değerlendirme Lisansı

API’leri tam kapasiteyle test etmek için ücretsiz geçici lisans alabilirsiniz.

Özetliyor

C#’ta programlı olarak akış şemaları oluşturmak, süreçlerin ve iş akışlarının görselleştirilmesini otomatikleştirmenin güçlü bir yoludur. Kapsanan sınıfların ve yöntem çağrılarının yardımıyla hızlı bir şekilde dinamik ve etkileşimli akış şemaları oluşturabilirsiniz. Bu eğitimin size C#’ta kendi akış şemalarınızı oluşturmaya başlamanız için sağlam bir temel sağladığını umuyoruz. Herhangi bir belirsizlik durumunda, lütfen forum adresinden bize ulaşın.

SSS

Ek şekiller ve bağlayıcılarla daha karmaşık akış şemaları oluşturabilir miyim?

Evet, herhangi bir süreci temsil etmek için gereken sayıda şekil ve bağlayıcı oluşturabilirsiniz.

Akış şemasını bir görüntüye veya PDF’ye aktarabilir miyim?

Evet, akış şemalarının resimler ve PDF’ler dahil çeşitli formatlara aktarılmasını destekler.

Akış şemasına özel şekiller ekleyebilir miyim?

Evet, özel şekiller oluşturabilirsiniz. Bu, özel ihtiyaçlarınıza göre uyarlanmış şekiller oluşturmanıza olanak tanır.

Ayrıca bakınız