Beispiel #1
0
        /// <summary>
        /// Desenha o grafo atual.
        /// </summary>
        private void DrawGraph(EDA.Graph graphToDraw, EDA.Node[] highlightedNodes)
        {
            List <EDA.Edge> edges = new List <EDA.Edge>();

            Glee.Graph drawingGraph = new Glee.Graph("Grafo - EDA2");
            // Adiciona nós ao grafo..
            foreach (EDA.Node node in graphToDraw.Nodes)
            {
                Glee.Node drawingNode = drawingGraph.AddNode(node.Name);
                drawingNode.Attr.Shape = Glee.Shape.Circle;
                if (highlightedNodes != null && Array.IndexOf(highlightedNodes, node) >= 0)
                {
                    drawingNode.Attr.Color = Glee.Color.Red;
                }
                // Consolida os arcos..
                edges.AddRange(node.Edges);
            }
            foreach (EDA.Edge edge in edges)
            {
                Glee.Edge drawingEdge = drawingGraph.AddEdge(edge.From.Name, edge.To.Name);
                drawingEdge.Attr.Label = String.Format("{0:F4}", edge.Cost);
            }
            // Gera controle de desenho..
            GleeUI.GViewer viewer = new GleeUI.GViewer();
            viewer.NavigationVisible = false;
            viewer.OutsideAreaBrush  = Brushes.White;
            viewer.RemoveToolbar();
            viewer.Graph = drawingGraph;
            viewer.Dock  = System.Windows.Forms.DockStyle.Fill;
            pnlGraph.Controls.Clear();
            pnlGraph.Controls.Add(viewer);
        }
Beispiel #2
0
        /// <summary>
        /// Atribui aos controles o conteúdo do grafo.
        /// </summary>
        private void SetGraphControls(EDA.Graph graphToDraw, bool drawGraph = true)
        {
            List <EDA.Edge> edges = new List <EDA.Edge>();

            EDA.Node[] nodes = graphToDraw.Nodes;
            // Limpa controles..
            txtNodeName.Clear();
            cmbNodeFrom.Items.Clear();
            cmbNodeTo.Items.Clear();
            cmbNodeNeighbourhood.Items.Clear();
            lstArcs.Items.Clear();
            // Carrega nós e agrupa arcos..
            foreach (EDA.Node node in nodes)
            {
                edges.AddRange(node.Edges);
                // Adiciona nós ao combo..
                cmbNodeFrom.Items.Add(node);
                cmbNodeTo.Items.Add(node);
                cmbNodeNeighbourhood.Items.Add(node);
            }
            // Adiciona os arcos ao listbox..
            foreach (EDA.Edge edge in edges)
            {
                lstArcs.Items.Add(edge);
            }
            if (drawGraph)
            {
                DrawGraph(graphToDraw, null);
            }
        }
Beispiel #3
0
 private void btnKruskal_Click(object sender, EventArgs e)
 {
     EDA.Graph kruskalGraph = this.graph.Kruskal();
     if (kruskalGraph != null)
     {
         SetGraphControls(kruskalGraph);
     }
 }
Beispiel #4
0
 private void btnPrim_Click(object sender, EventArgs e)
 {
     EDA.Graph primGraph = this.graph.Prim();
     if (primGraph != null)
     {
         SetGraphControls(primGraph);
     }
 }
Beispiel #5
0
 /// <summary>
 /// Cria nova instância do form principal.
 /// </summary>
 public Principal()
 {
     InitializeComponent();
     this.graph = new EDA.Graph();
 }