Créer un organigramme C#

Les organigrammes sont un outil visuel puissant pour représenter les processus et les flux de travail. Dans cet article de blog, nous explorerons comment créer des organigrammes en C#. Que vous construisiez une application complexe ou que vous ayez simplement besoin de visualiser un processus simple, la création d’organigrammes peut être utile lorsque vous avez besoin de partager des informations avec le public concerné.

Pourquoi créer des organigrammes ?

Créer des organigrammes est utile pour différentes raisons. Par exemple:

Documentation automatisée : générez automatiquement des organigrammes basés sur du code ou des fichiers de configuration, garantissant ainsi une documentation à jour.

Diagrammes dynamiques : créez des organigrammes dynamiques basés sur des données qui peuvent changer en temps réel en fonction des entrées de l’utilisateur ou d’autres variables.

Intégration : intégrez des organigrammes dans vos applications, permettant aux utilisateurs d’interagir avec eux et de les manipuler directement dans le logiciel.

Générateur d’organigrammes - Installation de l’API C#

Pour suivre ce didacticiel, vous devez configurer Visual Studio IDE et préparer l’environnement en installant Conholdate.Total for .NET avec la commande d’installation NuGet ci-dessous :

PM> NuGet\Install-Package Conholdate.Total

Créer un organigramme en C#

Vous pouvez apprendre à créer un organigramme en C# en ajoutant quelques formes et connecteurs :

  • Commencez par créer le schéma de l’organigramme.
  • Chargez le maître pour ajouter des formes à l’aide de la classe Diagram.
  • Ajoutez des formes et des connecteurs selon le schéma.
  • Organisez la disposition du diagramme de flux.
  • Enfin, enregistrez le diagramme en tant que fichier VSDX à l’aide de la méthode Save.

L’exemple de code ci-dessous montre comment générer un organigramme en C# :

namespace CreateFlowchart
{
    class Program
    {
        static void Main(string[] args)
        {
            //schéma du diagramme à créer
            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>();

            //Ajout de formes et de connecteurs à partir du schéma
            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; }
    }
}

Projet de démonstration

Vous pouvez télécharger le exemple de projet fonctionnel de votre côté pour une démonstration rapide de la fonctionnalité. De plus, il peut être encore amélioré en modifiant les formes, les connexions, les connecteurs, etc. pour tester différents cas d’utilisation.

Licence d’évaluation gratuite

Vous pouvez obtenir une licence temporaire gratuite pour tester les API dans leur pleine capacité.

Résumé

La création d’organigrammes par programmation en C# est un moyen puissant d’automatiser la visualisation des processus et des flux de travail. À l’aide des classes couvertes et des appels de méthode, vous pouvez générer rapidement des organigrammes dynamiques et interactifs. Nous espérons que ce didacticiel vous a fourni une base solide pour commencer à créer vos propres organigrammes en C#. En cas d’ambiguïté, veuillez nous contacter au forum.

FAQ

Puis-je créer des organigrammes plus complexes avec des formes et des connecteurs supplémentaires ?

Oui, vous pouvez créer autant de formes et de connecteurs que nécessaire pour représenter n’importe quel processus.

Puis-je exporter l’organigramme vers une image ou un PDF ?

Oui, il prend en charge l’exportation de diagrammes vers différents formats, notamment des images et des PDF.

Puis-je ajouter des formes personnalisées à l’organigramme ?

Oui, vous pouvez créer des formes personnalisées. Cela vous permet de créer des formes adaptées à vos besoins spécifiques.

Voir également