フローチャートを作成する 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 など、さまざまな形式でフローチャートをエクスポートできます。

フローチャートにカスタム図形を追加できますか?

はい、カスタムシェイプを作成できます。これにより、特定のニーズに合わせたシェイプを作成できます。

参照