Пример #1
0
        static void DrawGraphLayout()
        {
            var graph = new Graph("graph");

            graph.AddEdge("A", "B");
            graph.AddEdge("B", "C");
            graph.AddEdge("A", "C").Attr.Color = Color.Green;
            graph.FindNode("A").Attr.FillColor = Color.Magenta;
            graph.FindNode("B").Attr.FillColor = Color.MistyRose;

            var c = graph.FindNode("C");

            c.Attr.FillColor          = Color.PaleGreen;
            c.Attr.Shape              = Shape.Diamond;
            graph.Attr.LayerDirection = LayerDirection.BT;
            var renderer = new GraphRenderer(graph);

            renderer.CalculateLayout();
            int width  = 1400;
            int height = 200;
            var bitmap = new System.Drawing.Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

            renderer.Render(bitmap);
            bitmap.Save("graph.bmp");
        }
        /// <summary>
        /// Render the graph to an image
        /// </summary>
        /// <param name="graph">The graph to be rendered</param>
        /// <param name="width">Width of the image. Will be calculated relatively if not provided</param>
        /// <param name="height">Height of the image. Will be calculated relatively if not provided</param>
        /// <returns>The rendered Bitmap</returns>
        public static Bitmap RenderImage(this Graph graph, int width = -1, int height = -1)
        {
            var renderer = new GraphRenderer(graph);

            renderer.CalculateLayout();
            if (width == -1 && height == -1)
            {
                width = (int)(Math.Sqrt(graph.NodeCount)) * 150;
            }
            else if (width != -1 && height != -1)
            {
                if (width / height > graph.Width / graph.Height)
                {
                    height = -1;
                }
                else
                {
                    width = -1;
                }
            }
            if (width == -1)
            {
                width = (int)Math.Round(graph.Width / graph.Height * height);
            }
            else
            {
                height = (int)Math.Round(graph.Height / graph.Width * width);
            }
            var image = new Bitmap(width, height);

            renderer.Render(image);
            return(image);
        }
        public void SaveGraphToFile(FeatherVaneGraph data, int width, int height, string filename)
        {
            Graph gleeGraph = CreateGraph(data);

            var renderer = new GraphRenderer(gleeGraph);
            renderer.CalculateLayout();

            var bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb);
            renderer.Render(bitmap);

            bitmap.Save(filename, ImageFormat.Png);
        }
Пример #4
0
        public void SaveGraphToFile(StateMachineGraphData data, int width, int height, string filename)
        {
            Graph gleeGraph = CreateGraph(data);

            var renderer = new GraphRenderer(gleeGraph);
            renderer.CalculateLayout();

            var bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb);
            renderer.Render(bitmap);

            Trace.WriteLine("Saving graph to " + filename);

            bitmap.Save(filename, ImageFormat.Png);
        }
Пример #5
0
        private void DrawPreviewAutomata()
        {
            if (WindowState == FormWindowState.Minimized)
            {
                return;
            }

            var graph = new AutomataGraph(Automata);

            try
            {
                if (SourceStateIdComboBox.SelectedIndex == -1 || TargetStateIdComboBox.SelectedIndex == -1)
                {
                    return;
                }

                var sourceDrawingState = graph.FindNode(SourceStateIdComboBox.SelectedItem as string) as State;
                var targetDrawingState = graph.FindNode(TargetStateIdComboBox.SelectedItem as string) as State;

                var transition = ConstructTransition(sourceDrawingState.LogicState.Id, targetDrawingState.LogicState.Id);

                var edge = new Edge(sourceDrawingState, targetDrawingState, transition);

                graph.SetupEdge(edge);

                edge.Attr.Color = edge.Label.FontColor = MsaglColor.Blue;

                graph.AddPrecalculatedEdge(edge);

                ErrorLabel.Text = "";
            }
            catch
            {
                ErrorLabel.Text = "A megadott szimbólum nem elérhető az ábécében!";
            }

            var renderer = new GraphRenderer(graph);

            renderer.CalculateLayout();

            using (var graphics = DrawPanel.CreateGraphics())
            {
                graphics.SmoothingMode      = SmoothingMode.HighQuality;
                graphics.TextRenderingHint  = TextRenderingHint.AntiAliasGridFit;
                graphics.CompositingQuality = CompositingQuality.HighQuality;
                graphics.InterpolationMode  = InterpolationMode.HighQualityBicubic;

                renderer.Render(graphics, 0, 0, DrawPanel.Width, DrawPanel.Height);
            }
        }
Пример #6
0
        static void DrawGraphLayout(CspModel model)
        {
            var graph        = new Graph();
            var createdEdges = new List <string>();

            //graph.Directed = true;
            graph.Attr.SimpleStretch = false;
            //graph.LayoutAlgorithmSettings.PackingMethod = Microsoft.Msagl.Core.Layout.PackingMethod.Compact;
            //graph.LayoutAlgorithmSettings.EdgeRoutingSettings.Padding = 10;

            foreach (var variable in model.Variables)
            {
                var n = graph.AddNode($"{variable.Name}={variable.Value}");
                if (variable.Value == -1)
                {
                    n.Attr.FillColor = Color.Yellow;
                }
                n.Attr.Shape = Shape.Box;
                foreach (var constraint in model.Constraints.Where(c => c.GetVariables().Any(v => v.GetVariable().Name == variable.Name)))
                {
                    graph.AddNode(constraint.ToString());
                    graph.AddEdge(variable.Name + "=" + variable.Value, constraint.ToString());
                    foreach (var target in constraint.GetVariables())
                    {
                        if (target.GetVariable().Name != variable.Name)
                        {
                            if (!createdEdges.Contains(constraint.ToString() + "->" + target.GetVariable().Name))
                            {
                                graph.AddNode(target.GetVariable().Name + "=" + target.GetVariable().Value);
                                graph.AddEdge(constraint.ToString(), target.GetVariable().Name + "=" + target.GetVariable().Value);
                                createdEdges.Add(constraint.ToString() + "->" + target.GetVariable().Name);
                            }
                        }
                    }
                }
            }

            graph.CreateGeometryGraph();

            var renderer = new GraphRenderer(graph);
            int width    = 600;
            int height   = 600;
            var bitmap   = new System.Drawing.Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

            renderer.CalculateLayout();
            renderer.Render(bitmap);
            bitmap.Save("graph.bmp");
        }
Пример #7
0
 private void _saveImage_Click(object sender, EventArgs e)
 {
     saveFileDialog.Title      = "Save As";
     saveFileDialog.Filter     = "PNG (*.png)|*.png";
     saveFileDialog.DefaultExt = ".png";
     saveFileDialog.FileName   = Regex.Replace(_grapher.Name, @"\.[^.]*$", ".png");
     if (saveFileDialog.ShowDialog() == DialogResult.OK)
     {
         if (viewer.Graph != null)
         {
             GraphRenderer renderer = new GraphRenderer(viewer.Graph);
             renderer.CalculateLayout();
             System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap((int)viewer.GraphWidth,
                                                                      (int)viewer.GraphHeight);
             renderer.Render(bitmap);
             bitmap.Save(saveFileDialog.FileName, System.Drawing.Imaging.ImageFormat.Png);
             toolStripProgressBar.Visible = false;
         }
     }
 }
Пример #8
0
 public static void saveGleeGraphAsImage(String sPathToImage, Graph gGraph)
 {
     //String sImagePath = config.getTempFileNameInO2TempDirectory() + ".png";// System.IO.Path.Combine(DI.config.O2TempDir, "test.png");
     // Saving map
     var grGraphRendere = new GraphRenderer(gGraph);
     int iWidth = 1024;
     int iHeight = 1024;
     grGraphRendere.CalculateLayout();
     iWidth = (int) gGraph.Width;
     iHeight = (int) gGraph.Height;
     //     DI.log.debug("Width: {0} , Height: {1}", iWidth.ToString(), iHeight.ToString());
     //Bitmap bitmap = new Bitmap(width, (int)(gGraph.Height * (width / gGraph.Width)),System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
     var bitmap = new Bitmap(iWidth, iHeight, PixelFormat.Format32bppPArgb);
     grGraphRendere.Render(bitmap);
     bitmap.Save(sPathToImage);
     //      DI.log.debug("GLEE graph saved as bitmap image to: {0}", sPathToImage);
 }