Пример #1
0
        public static Bitmap PlottToBitMap(IEnumerable <IGraphNode> plottables, int imgsize = 500)
        {
            Graph graph = new Graph("");

            foreach (var node in plottables)
            {
                if (node.NodeColor != Microsoft.Glee.Drawing.Color.Transparent)
                {
                    Node n = graph.AddNode(node.NodeName);
                    n.Attr.Fillcolor = node.NodeColor;
                }
                foreach (var edge in node.NodeConnectedTo)
                {
                    Edge newedge = graph.AddEdge(node.NodeName, edge.Text, edge.TargetNode);
                    newedge.Attr.Fontsize = 10;
                    if (edge.CustomEdgeAttr != null)
                    {
                        newedge.EdgeAttr = edge.CustomEdgeAttr;
                    }
                    //if (edge.Color != Microsoft.Glee.Drawing.Color.Transparent)
                    //    newedge.Attr.Color = edge.Color;
                }
            }

            GraphRenderer renderer = new GraphRenderer(graph);

            renderer.CalculateLayout();
            Bitmap bitmap = new Bitmap(imgsize, (int)(graph.Height *
                                                      (imgsize / graph.Width)), PixelFormat.Format32bppPArgb);

            renderer.Render(bitmap);
            return(bitmap);
        }
Пример #2
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");
        }
Пример #3
0
        int ProcessDotFile(string inputFile)
        {
            Graph graph;
            int   i = CreateGraphFromDotFile(inputFile, out graph);

            if (i != 0)
            {
                return(i);
            }
            graph.LayoutAlgorithmSettings = PickLayoutAlgorithmSettings(graph.EdgeCount, graph.NodeCount);
            if (argsParser.OptionIsUsed(NoArrowheads))
            {
                RemoveArrowheadsFromGraph(graph);
            }
            EnlargeLabelMargins(graph);
            SetConsolasFontAndSize(graph, 13);

            // rendering
            var renderer = new GraphRenderer(graph);

            renderer.CalculateLayout();
            SetBoxRadiuses(graph);

            var    outputFile = Path.ChangeExtension(inputFile, ".svg");
            string outputDir  = argsParser.GetValueOfOptionWithAfterString(OutputDirOption);

            if (outputDir != null)
            {
                var name = Path.GetFileName(outputFile);
                if (name != null)
                {
                    outputFile = Path.Combine(outputDir, name);
                }
            }


            SetConsolasFontAndSize(graph, 11);
            if (argsParser.OptionIsUsed(NoLabelsOption))
            {
                RemoveLabelsFromGraph(graph);
            }

            var svgWriter = new SvgGraphWriter(File.Create(outputFile), graph)
            {
                NodeSanitizer = AntiXss.HtmlAttributeEncode, AttrSanitizer = AntiXss.HtmlAttributeEncode,
                Precision     = precision, AllowedToWriteUri = !argsParser.OptionIsUsed(NoUrls)
            };

            svgWriter.Write();
            DumpFileToConsole(outputFile);


            if (msaglOutput)
            {
                outputFile = SetMsaglOutputFileName(inputFile);
                var geomGraph = graph.GeometryGraph;
                WriteGeomGraph(outputFile, geomGraph);
            }
            return(0);
        }
        /// <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);
        }
Пример #6
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);
            }
        }
Пример #7
0
        public void SaveGraphToFile(RulesEngine engine, int width, int height, string filename)
        {
            Graph gleeGraph = CreateGraph(engine);

            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);
        }
Пример #8
0
        private static void ToBitmap(Graph graph)
        {
            GraphRenderer renderer = new GraphRenderer(graph);

            renderer.CalculateLayout();

            int    width  = 1000;
            Bitmap bitmap = new Bitmap(width,
                                       (int)(graph.Height * (width / graph.Width)),
                                       System.Drawing.Imaging.PixelFormat.Format32bppPArgb);

            renderer.Render(bitmap);
            bitmap.Save("test.png");
        }
Пример #9
0
        public void SaveGraphToFile(RulesEngineGraph 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);
        }
Пример #10
0
        public void SaveGraphAsImage(string path, List <Edge> edges)
        {
            Graph tmp = CreateGraph(edges);

            GraphRenderer graphRenderer = new GraphRenderer(tmp);

            GraphRenderer renderer = new GraphRenderer(tmp);

            renderer.CalculateLayout();
            int    width  = 1000;
            Bitmap bitmap = new Bitmap(width, (int)(tmp.Height * (width / tmp.Width)), PixelFormat.Format32bppPArgb);

            renderer.Render(bitmap);
            bitmap.Save(path);
        }
        public string SaveGraphAsImg(string path)
        {
            Graph         tmp      = Draw();
            GraphRenderer renderer = new GraphRenderer(tmp);

            renderer.CalculateLayout();
            Bitmap bitmap = new Bitmap(WIDTH, (int)(tmp.Height * (WIDTH / tmp.Width)), PixelFormat.Format32bppPArgb);

            renderer.Render(bitmap);
            string name = path + Guid.NewGuid().ToString() + @".jpg";

            bitmap.Save(name);
            bitmap.Dispose();
            return(name);
        }
Пример #12
0
        private void PrepareForOutput(Graph graph)
        {
            graph.LayoutAlgorithmSettings = PickLayoutAlgorithmSettings(graph.EdgeCount, graph.NodeCount);
            if (argsParser.OptionIsUsed(NoArrowheads))
            {
                RemoveArrowheadsFromGraph(graph);
            }
            EnlargeLabelMargins(graph);
            SetConsolasFontAndSize(graph, 13);
            // rendering
            var renderer = new GraphRenderer(graph);

            renderer.CalculateLayout();
            SetBoxRadiuses(graph);
        }
Пример #13
0
        private void DrawPreviewAutomata()
        {
            if (WindowState == FormWindowState.Minimized)
            {
                return;
            }

            var graph = new AutomataGraph(Automata);

            if (Automata.GetState(StateIdTextBox.Text) != null)
            {
                return;
            }

            if (StateIdTextBox.Text.Length > 0)
            {
                var state = new State(ConstructState());

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

                var startState = Automata.GetStartState();

                if (state.IsStartState && startState != null)
                {
                    var oldStartState = graph.FindNode(startState.Id) as State;

                    oldStartState.OverrideIsStartState = false;
                }

                graph.SetupState(state);
                graph.AddNode(state);
            }

            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);
            }
        }
Пример #14
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");
        }
Пример #15
0
        public void SaveGraphToFile(PipelineGraphData 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);
        }
Пример #16
0
        /// <summary>
        /// Gera a imagem do grafo e salva no path passado
        /// </summary>
        /// <param name="graph">Grafo</param>
        /// <param name="path">Caminho destino da imagem</param>
        private static bool GenerateGraphImage(Graph graph, string path)
        {
            GraphRenderer renderer = new GraphRenderer(graph);

            renderer.CalculateLayout();
            Bitmap bitmap = new Bitmap((int)(graph.Width * 1.2), (int)(graph.Height * 1.2), PixelFormat.Format32bppPArgb);

            renderer.Render(bitmap);

            if (!path.Equals(""))
            {
                bitmap.Save(path);
                return(true);
            }
            return(false);
        }
        public static Bitmap ToBitmap(this Graph graph)
        {
            var renderer = new GraphRenderer(graph);

            renderer.CalculateLayout();
            var bmp = new Bitmap((int)graph.Width, (int)graph.Height, PixelFormat.Format32bppArgb);

            using (var gr = Graphics.FromImage(bmp))
            {
                gr.CompositingQuality = CompositingQuality.HighQuality;
                gr.InterpolationMode  = InterpolationMode.HighQualityBilinear;
                gr.SmoothingMode      = SmoothingMode.AntiAlias;
                gr.TextRenderingHint  = TextRenderingHint.ClearTypeGridFit;
                renderer.Render(gr, 0, 0, bmp.Width, bmp.Height);
            }
            return(bmp);
        }
Пример #18
0
        public static void build_image(String directory, LogicalImage image, ImageConstraints constraints, int index)
        {
            Graph graph = new Graph("graph");
            GetNodeBoundaryDelegate boundry = new GetNodeBoundaryDelegate(GetNodeBoundary);
            double thickness = s_random.Next(20, 60) / 10.0;

            var settings = new SugiyamaLayoutSettings
            {
                EdgeRoutingSettings = { CornerRadius = 0.0, EdgeRoutingMode = EdgeRoutingMode.Rectilinear, Padding = 1, BendPenalty = 99 },
                AspectRatio         = 1
            };

            graph.LayoutAlgorithmSettings = settings;
            foreach (var connection in image.Connections)
            {
                ImageLayout.Shape src   = connection.Source;
                ImageLayout.Shape dst   = connection.Destination;
                String            label = "";
                var edge = graph.AddEdge(src.ToString(), label, dst.ToString());
                edge.Attr.LineWidth = thickness;
            }

            foreach (var shape in image.Shapes)
            {
                Microsoft.Msagl.Drawing.Node node = graph.FindNode(shape.ToString());
                node.Attr.Shape           = Microsoft.Msagl.Drawing.Shape.DrawFromGeometry;
                node.NodeBoundaryDelegate = new DelegateToSetNodeBoundary(boundry);
                node.LabelText            = "";
                node.Attr.LineWidth       = thickness;
                //node.Attr.FillColor = new Microsoft.Msagl.Drawing.Color((byte)s_random.Next(255), (byte)s_random.Next(255), (byte)s_random.Next(255));
            }

            var renderer = new GraphRenderer(graph);

            renderer.CalculateLayout();
            Point topleft = graph.GeometryGraph.BoundingBox.LeftTop;

            graph.GeometryGraph.Transform(new PlaneTransformation(1, 0, 0 - topleft.X, 0, 1, 0 - topleft.Y)); //fix bounding box

            Bitmap bitmap = new Bitmap((int)graph.Width, (int)graph.Height, PixelFormat.Format32bppPArgb);    //PixelFormat.Format32bppPArgb);

            renderer.Render(bitmap);
            bitmap.Save(System.IO.Path.Combine(directory, index + ".jpg"));
            create_json(directory, graph, index);
        }
Пример #19
0
        /// <summary>
        /// Draws the modified automata based on the form fields' value.
        /// </summary>
        private void DrawPreviewAutomata()
        {
            if (WindowState == FormWindowState.Minimized)
            {
                return;
            }

            var graph = new AutomataGraph(Automata);

            if (SourceStateIdComboBox.SelectedIndex != -1 && TransitionComboBox.SelectedIndex != -1 && _comboBoxSelectionList.Count > TransitionComboBox.SelectedIndex)
            {
                var sourceDrawingState = graph.FindNode(SourceStateIdComboBox.SelectedItem as string) as State;

                foreach (var outEdge in sourceDrawingState.Edges)
                {
                    if (outEdge is Edge edge && edge.SourceNode == sourceDrawingState)
                    {
                        if (edge.LogicTransition == _comboBoxSelectionList[TransitionComboBox.SelectedIndex])
                        {
                            edge.Attr.Color      = MsaglColor.Red;
                            edge.Label.FontColor = MsaglColor.Red;
                        }
                        else
                        {
                            edge.Attr.Color      = MsaglColor.Orange;
                            edge.Label.FontColor = MsaglColor.Orange;
                        }
                    }
                }
            }

            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);
            }
        }
Пример #20
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);
        }
Пример #21
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;
         }
     }
 }
Пример #22
0
        /// <summary>
        /// Draws the automata on the given graphical surface.
        /// </summary>
        /// <param name="graphics">The graphical surface.</param>
        /// <param name="left">The left coordinate to draw from.</param>
        /// <param name="top">The top coordinate to draw from.</param>
        /// <param name="width">The width of the surface.</param>
        /// <param name="height">The height of the surface.</param>
        public void DrawAutomata(Graphics graphics, int left, int top, int width, int height)
        {
            var renderer = new GraphRenderer(this);

            renderer.CalculateLayout();

            graphics.SmoothingMode      = SmoothingMode.HighQuality;
            graphics.TextRenderingHint  = TextRenderingHint.AntiAliasGridFit;
            graphics.CompositingQuality = CompositingQuality.HighQuality;
            graphics.InterpolationMode  = InterpolationMode.HighQualityBicubic;

            graphics.Clear(System.Drawing.Color.White);

            if (Simulation != null)
            {
                SimulationDrawer.DrawSimulationData(graphics, left, top + height - SimulationDrawer.SimulationBarHeight, width);
            }

            renderer.Render(graphics, left, top, width, height - SimulationDrawer.SimulationBarHeight);
        }
Пример #23
0
        private void bfsButton_Click(object sender, EventArgs e)
        {
            nextButton.Visible = true;
            dfsButton.Visible  = false;
            bfsButton.Visible  = false;
            CoursePlanner.Program.Execute("BFS", filename);
            CoursePlanner.Planner.metode = "BFS";
            PrintPlan(CoursePlanner.Program.CoursePlan);
            GraphRenderer renderer = new GraphRenderer(Planner.final_graph);

            renderer.CalculateLayout();
            int    width  = 100;
            Bitmap bitmap = new Bitmap(width, (int)(Planner.final_graph.Height * (width / Planner.final_graph.Width)), PixelFormat.Format32bppPArgb);

            renderer.Render(bitmap);
            bitmap.Save("Test.png");

            GraphPictureBox.Image    = Image.FromFile("Test.png");
            GraphPictureBox.SizeMode = PictureBoxSizeMode.CenterImage;
        }
Пример #24
0
        /// <summary>
        /// Draws the modified automata based on the form fields' value.
        /// </summary>
        private void DrawPreviewAutomata()
        {
            if (WindowState == FormWindowState.Minimized)
            {
                return;
            }

            var graph = new AutomataGraph(Automata);

            var selectedStateId = DeleteStateComboBox.SelectedItem as string;

            if (!String.IsNullOrWhiteSpace(selectedStateId) && Automata.GetState(selectedStateId) != null)
            {
                if (graph.FindNode(selectedStateId) is State state)
                {
                    state.Attr.Color      = MsaglColor.Red;
                    state.Label.FontColor = MsaglColor.Red;

                    foreach (var edge in state.Edges)
                    {
                        edge.Attr.Color      = MsaglColor.Red;
                        edge.Label.FontColor = MsaglColor.Red;
                    }
                }
            }

            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);
            }
        }
Пример #25
0
        private void nextButton_Click(object sender, EventArgs e)
        {
            if (CoursePlanner.Planner.metode == "DFS")
            {
                WindowsFormsApp1.ViewerGraph.nextDFS();
                GraphRenderer renderer = new GraphRenderer(Planner.final_graph);
                renderer.CalculateLayout();
                int    width  = 100;
                Bitmap bitmap = new Bitmap(width, (int)(Planner.final_graph.Height * (width / Planner.final_graph.Width)), PixelFormat.Format32bppPArgb);
                renderer.Render(bitmap);
                string savename = "Test" + CoursePlanner.Planner.counter + ".png";
                bitmap.Save(savename);
                CoursePlanner.Planner.counter++;

                GraphPictureBox.Image    = Image.FromFile(savename);
                GraphPictureBox.SizeMode = PictureBoxSizeMode.CenterImage;
            }
            else // BFS
            {
                if (CoursePlanner.Program.CoursePlan.Count > 0)
                {
                    WindowsFormsApp1.ViewerGraph.nextBFS();
                    GraphRenderer renderer = new GraphRenderer(Planner.final_graph);
                    renderer.CalculateLayout();
                    int    width  = 100;
                    Bitmap bitmap = new Bitmap(width, (int)(Planner.final_graph.Height * (width / Planner.final_graph.Width)), PixelFormat.Format32bppPArgb);
                    renderer.Render(bitmap);
                    string savename = "Test" + CoursePlanner.Planner.counter + ".png";
                    bitmap.Save(savename);
                    CoursePlanner.Planner.counter++;

                    GraphPictureBox.Image    = Image.FromFile(savename);
                    GraphPictureBox.SizeMode = PictureBoxSizeMode.CenterImage;
                }
                else
                {
                    nextButton.Visible = false;
                }
            }
        }
Пример #26
0
        private void RenderGraph(Stream stream, Graph graph)
        {
            var renderer = new GraphRenderer(graph);

            renderer.CalculateLayout();

            const float scale = 6.0f;
            var         w     = (int)(graph.Width * scale);
            var         h     = (int)(graph.Height * scale);

            using (var img = new Bitmap(w, h, PixelFormat.Format32bppPArgb))
                using (var g = Graphics.FromImage(img))
                {
                    g.SmoothingMode      = SmoothingMode.HighQuality;
                    g.TextRenderingHint  = TextRenderingHint.AntiAliasGridFit;
                    g.CompositingQuality = CompositingQuality.HighQuality;
                    g.InterpolationMode  = InterpolationMode.HighQualityBicubic;

                    DrawGraph(g, w, h, scale, graph, renderer);

                    renderer.Render(img);
                    img.Save(stream, ImageFormat.Png);
                }
        }
Пример #27
0
        private static void DumpRetention(DataTarget dataTarget, ClrInfo clrVersion, ClrRuntime runtime, ClrAppDomain appDomain, ClrHeap heap, string targetType)
        {
            var graph = new Graph();

            Console.WriteLine("## What's the retention path of the {0} object?", targetType);
            Console.WriteLine("");
            foreach (var ptr in heap.EnumerateObjectAddresses())
            {
                var type = heap.GetObjectType(ptr);
                if (type == null || type.Name != targetType)
                {
                    continue;
                }

                // Enumerate roots and try to find the current object
                var stack = new Stack <ulong>();
                foreach (var root in heap.EnumerateRoots())
                {
                    stack.Clear();
                    stack.Push(root.Object);
                    if (GetPathToObject(heap, ptr, stack, new HashSet <ulong>()))
                    {
                        // Print retention path
                        var depth           = 0;
                        var previousAddress = (ulong)0;
                        foreach (var address in stack)
                        {
                            var t = heap.GetObjectType(address);
                            if (t == null)
                            {
                                continue;
                            }

                            Console.WriteLine("{0} {1} - {2} - {3} bytes", new string('+', depth++), address, t.Name, t.GetSize(address));

                            graph.AddNode(address.ToString()).LabelText = $"{t.Name} ({address})";
                            if (previousAddress > 0 && !graph.Edges.Any(e => e.Source == previousAddress.ToString() && e.Target == address.ToString()))
                            {
                                graph.AddEdge(previousAddress.ToString(), address.ToString());
                            }
                            previousAddress = address;
                        }

                        Console.WriteLine();
                    }
                }
            }

            Console.ReadLine();

            // Render graph
            var width    = 1600;
            var renderer = new GraphRenderer(graph);

            renderer.CalculateLayout();
            var bitmap = new Bitmap(width, (int)(graph.Height * (width / graph.Width)), PixelFormat.Format32bppRgb);

            renderer.Render(bitmap);
            bitmap.Save("test.png");
            Process.Start("test.png");
        }
Пример #28
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ListLogFx_MH  = (List <double>)Session["logFx_MH"];
                ListLogFx_NS  = (List <double>)Session["logFx_NS"];
                ListLogFx_HAR = (List <double>)Session["logFx_HAR"];

                MeanPostNetwork_MH  = (DataTable)Session["MeanPostNet_MH"];
                MeanPostNetwork_NS  = (DataTable)Session["MeanPostNet_NS"];
                MeanPostNetwork_HAR = (DataTable)Session["MeanPostNet_HAR"];

                HighestFreqNetwork_MH  = (DataTable)Session["HighestPostNet_MH"];
                HighestFreqNetwork_NS  = (DataTable)Session["HighestPostNet_NS"];
                HighestFreqNetwork_HAR = (DataTable)Session["HighestPostNet_HAR"];

                //mcmc_method = (string) Session["MCMC_method"];

                #region LogFX
                if (ListLogFx_MH != null)
                {
                    p_Chart_MH.Style["display"] = "block";

                    for (ulong it = 0; it < (ulong)ListLogFx_MH.Count; it++)
                    {
                        this.ChartLogFx_MH.Series["Series_LogFx_MH"].Points.AddXY(it, ListLogFx_MH[(int)it]);
                    }
                }
                if (ListLogFx_NS != null)
                {
                    p_Chart_NS.Style["display"] = "block";

                    for (ulong it = 0; it < (ulong)ListLogFx_NS.Count; it++)
                    {
                        this.ChartLogFx_NS.Series["Series_LogFx_NS"].Points.AddXY(it, ListLogFx_NS[(int)it]);
                    }
                }
                if (ListLogFx_HAR != null)
                {
                    p_Chart_HAR.Style["display"] = "block";

                    for (ulong it = 0; it < (ulong)ListLogFx_HAR.Count; it++)
                    {
                        this.ChartLogFx_HAR.Series["Series_LogFx_HAR"].Points.AddXY(it, ListLogFx_HAR[(int)it]);
                    }
                }
                #endregion

                #region Mean Posteriori Network
                if (MeanPostNetwork_MH != null)
                {
                    p_imgMP_MH.Style["display"] = "block";

                    Graph graph = new Graph("graph");

                    //create the graph content
                    foreach (DataRow row in MeanPostNetwork_MH.Rows)
                    {
                        graph.AddEdge((string)row.ItemArray[0], (string)row.ItemArray[1]);
                    }

                    GraphRenderer renderer = new GraphRenderer(graph);
                    renderer.CalculateLayout();
                    int    width  = 900;
                    Bitmap bitmap = new Bitmap(width, (int)(graph.Height * (width / graph.Width)), PixelFormat.Format32bppPArgb);
                    renderer.Render(bitmap);
                    bitmap.Save((string)Session["path"] + "MH_MeanPostNetwork.bmp");


                    if (((string)Session["runExample"]).Equals("true"))
                    {
                        this.img_MeanPostNet_MH.ImageUrl = @"Data/MH_MeanPostNetwork.bmp";
                    }
                    else
                    {
                        this.img_MeanPostNet_MH.ImageUrl = @"Data/" + (string)Session["guid"] + "/MH_MeanPostNetwork.bmp";
                    }
                }
                if (MeanPostNetwork_NS != null)
                {
                    p_imgMP_NS.Style["display"] = "block";

                    Graph graph = new Graph("graph");

                    //create the graph content
                    foreach (DataRow row in MeanPostNetwork_NS.Rows)
                    {
                        graph.AddEdge((string)row.ItemArray[0], (string)row.ItemArray[1]);
                    }

                    GraphRenderer renderer = new GraphRenderer(graph);
                    renderer.CalculateLayout();
                    int    width  = 900;
                    Bitmap bitmap = new Bitmap(width, (int)(graph.Height * (width / graph.Width)), PixelFormat.Format32bppPArgb);
                    renderer.Render(bitmap);
                    bitmap.Save((string)Session["path"] + "NS_MeanPostNetwork.bmp");


                    if (((string)Session["runExample"]).Equals("true"))
                    {
                        this.img_MeanPostNet_NS.ImageUrl = @"Data/NS_MeanPostNetwork.bmp";
                    }
                    else
                    {
                        this.img_MeanPostNet_NS.ImageUrl = @"Data/" + (string)Session["guid"] + "/NS_MeanPostNetwork.bmp";
                    }
                }
                if (MeanPostNetwork_HAR != null)
                {
                    p_imgMP_HAR.Style["display"] = "block";

                    Graph graph = new Graph("graph");

                    //create the graph content
                    foreach (DataRow row in MeanPostNetwork_HAR.Rows)
                    {
                        graph.AddEdge((string)row.ItemArray[0], (string)row.ItemArray[1]);
                    }

                    GraphRenderer renderer = new GraphRenderer(graph);
                    renderer.CalculateLayout();
                    int    width  = 900;
                    Bitmap bitmap = new Bitmap(width, (int)(graph.Height * (width / graph.Width)), PixelFormat.Format32bppPArgb);
                    renderer.Render(bitmap);
                    bitmap.Save((string)Session["path"] + "HAR_MeanPostNetwork.bmp");


                    if (((string)Session["runExample"]).Equals("true"))
                    {
                        this.img_MeanPostNet_HAR.ImageUrl = @"Data/HAR_MeanPostNetwork.bmp";
                    }
                    else
                    {
                        this.img_MeanPostNet_HAR.ImageUrl = @"Data/" + (string)Session["guid"] + "/HAR_MeanPostNetwork.bmp";
                    }
                }
                #endregion

                #region Highest Frequency Network
                if (HighestFreqNetwork_MH != null)
                {
                    p_imgHF_MH.Style["display"] = "block";

                    Graph graph = new Graph("graph");

                    //create the graph content
                    foreach (DataRow row in HighestFreqNetwork_MH.Rows)
                    {
                        graph.AddEdge((string)row.ItemArray[0], (string)row.ItemArray[1]);
                    }

                    GraphRenderer renderer = new GraphRenderer(graph);
                    renderer.CalculateLayout();
                    int width = 1600;

                    //Bitmap bitmap = new Bitmap(width, (int)(graph.Height * (width / graph.Width)), PixelFormat.Format32bppPArgb);

                    Bitmap bitmap = new Bitmap(width, (int)(graph.Height * (width / graph.Width)));
                    renderer.Render(bitmap);
                    bitmap.Save((string)Session["path"] + "MH_HighestFreqNetwork.bmp");

                    if (((string)Session["runExample"]).Equals("true"))
                    {
                        this.img_HighestFreqNet_MH.ImageUrl = @"Data/MH_HighestFreqNetwork.bmp";
                    }
                    else
                    {
                        this.img_HighestFreqNet_MH.ImageUrl = @"Data/" + (string)Session["guid"] + "/MH_HighestFreqNetwork.bmp";
                    }
                }
                if (HighestFreqNetwork_NS != null)
                {
                    p_imgHF_NS.Style["display"] = "block";

                    Graph graph = new Graph("graph");

                    //create the graph content
                    foreach (DataRow row in HighestFreqNetwork_NS.Rows)
                    {
                        graph.AddEdge((string)row.ItemArray[0], (string)row.ItemArray[1]);
                    }

                    GraphRenderer renderer = new GraphRenderer(graph);
                    renderer.CalculateLayout();
                    int width = 1600;

                    //Bitmap bitmap = new Bitmap(width, (int)(graph.Height * (width / graph.Width)), PixelFormat.Format32bppPArgb);

                    Bitmap bitmap = new Bitmap(width, (int)(graph.Height * (width / graph.Width)));
                    renderer.Render(bitmap);
                    bitmap.Save((string)Session["path"] + "NS_HighestFreqNetwork.bmp");

                    if (((string)Session["runExample"]).Equals("true"))
                    {
                        this.img_HighestFreqNet_NS.ImageUrl = @"Data/NS_HighestFreqNetwork.bmp";
                    }
                    else
                    {
                        this.img_HighestFreqNet_NS.ImageUrl = @"Data/" + (string)Session["guid"] + "/NS_HighestFreqNetwork.bmp";
                    }
                }
                if (HighestFreqNetwork_HAR != null)
                {
                    p_imgHF_HAR.Style["display"] = "block";

                    Graph graph = new Graph("graph");

                    //create the graph content
                    foreach (DataRow row in HighestFreqNetwork_HAR.Rows)
                    {
                        graph.AddEdge((string)row.ItemArray[0], (string)row.ItemArray[1]);
                    }

                    GraphRenderer renderer = new GraphRenderer(graph);
                    renderer.CalculateLayout();
                    int width = 1600;

                    //Bitmap bitmap = new Bitmap(width, (int)(graph.Height * (width / graph.Width)), PixelFormat.Format32bppPArgb);

                    Bitmap bitmap = new Bitmap(width, (int)(graph.Height * (width / graph.Width)));
                    renderer.Render(bitmap);
                    bitmap.Save((string)Session["path"] + "HAR_HighestFreqNetwork.bmp");

                    if (((string)Session["runExample"]).Equals("true"))
                    {
                        this.img_HighestFreqNet_HAR.ImageUrl = @"Data/HAR_HighestFreqNetwork.bmp";
                    }
                    else
                    {
                        this.img_HighestFreqNet_HAR.ImageUrl = @"Data/" + (string)Session["guid"] + "/HAR_HighestFreqNetwork.bmp";
                    }
                }
                #endregion
            }
        }
Пример #29
0
        // ReSharper disable once MethodTooLong
        private static void Main(string[] args)
        {
            try
            {
                LoadApplicationSettings();
                //Console.BackgroundColor = _Settings.EditorBackgroundColor;
                //Console.ForegroundColor = _Settings.EditorTextColor;
                //FillCurrentLineBackground();

                var parser       = new Parser(with => with.HelpWriter = null);
                var parserResult = parser.ParseArguments <Options>(args);
                parserResult
                .WithParsed(o =>
                {
                    var options       = Grammar.ParseOption.None;
                    var loadGui       = false;
                    var showParseTree = false;
                    var writeSvg      = false;
                    ISyntaxHighlightingGuide guide = null;

                    if (o.Tokens)
                    {
                        options |= Grammar.ParseOption.Tokens;
                    }
                    if (o.Diagnostics)
                    {
                        options |= Grammar.ParseOption.Diagnostics;
                    }
                    if (o.Trace)
                    {
                        options |= Grammar.ParseOption.Trace;
                    }
                    if (o.Tree)
                    {
                        options      |= Grammar.ParseOption.Tree;
                        showParseTree = true;
                    }

                    if (!string.IsNullOrEmpty(o.SvgFileName))
                    {
                        writeSvg = true;
                        options |= Grammar.ParseOption.Tree;
                    }

                    if (o.Sll)
                    {
                        options |= Grammar.ParseOption.Sll;
                    }
                    if (o.Gui)
                    {
                        loadGui  = true;
                        options |= Grammar.ParseOption.Tree;
                    }

                    var workingDirectory = Environment.CurrentDirectory;
                    var scanner          = new Grammar.Scanner();

                    var grammar = scanner.LocateGrammar(workingDirectory, o.GrammarName);
                    if (grammar == null)
                    {
                        Console.WriteLine(Resources.GrammarNotFoundErrorMessage, o.GrammarName);
                        return;
                    }

                    // To be used later once syntax highlighting for the console is enabled.
                    //var guideResult = grammar.LoadSyntaxHighlightingGuide();
                    //guide = guideResult != null ? guideResult.Item2 : new HeuristicSyntaxHighlightingGuide(_Settings);

                    string data;

                    if (!string.IsNullOrEmpty(o.FileName))
                    {
                        if (!File.Exists(o.FileName))
                        {
                            Console.WriteLine(Resources.FileNotFoundErrorMessage, o.FileName);
                            return;
                        }

                        var encodingToUse = !string.IsNullOrEmpty(o.EncodingName) ? Encoding.GetEncoding(o.EncodingName) : Encoding.Default;
                        using (var reader = new StreamReader(o.FileName, encodingToUse))
                            data = reader.ReadToEnd();
                    }
                    else
                    {
                        //var analyzer = new Analyzer();
                        var builder = new StringBuilder();
                        Console.WriteLine(Resources.ReadingFromStandardInputPromptMessage);
                        var currentLine = Console.CursorTop;
                        var keepReading = true;
                        while (keepReading)
                        {
                            if (Console.KeyAvailable)
                            {
                                while (Console.KeyAvailable)
                                {
                                    var typed = Console.ReadKey(true);

                                    if ((typed.Modifiers & ConsoleModifiers.Control) == ConsoleModifiers.Control &&
                                        typed.Key == ConsoleKey.Z)
                                    {
                                        Console.Write("^Z");
                                        keepReading = false;
                                        break;
                                    }

                                    if (typed.Key == ConsoleKey.Enter)
                                    {
                                        if (Console.CursorTop == Console.BufferHeight - 1)
                                        {
                                            _ScrollFadeCount++;
                                        }
                                        Console.WriteLine();
                                        FillCurrentLineBackground();
                                        builder.Append("\r\n");
                                    }
                                    else if (typed.Key == ConsoleKey.Tab)
                                    {
                                        var spaces = new string(' ', _Settings.EditorTabLength);
                                        Console.Write(spaces);
                                        builder.Append(spaces);
                                    }
                                    else if (typed.Key == ConsoleKey.Backspace)
                                    {
                                        if (Console.CursorLeft > 0)
                                        {
                                            Console.Write(typed.KeyChar);
                                            Console.Write(' ');
                                            Console.Write(typed.KeyChar);
                                            builder.Remove(builder.Length - 1, 1);
                                            _Cache.FlushTokensForLine(currentLine - (_ScrollFadeCount + 1));
                                        }
                                    }
                                    else
                                    {
                                        Console.Write(typed.KeyChar);
                                        builder.Append(typed.KeyChar);
                                    }
                                }

                                //analyzer.Tokenize(grammar, builder.ToString());
                                //HighlightSyntaxInConsole(currentLine - (_ScrollFadeCount + 1), analyzer, guide);
                            }
                        }

                        Console.WriteLine();
                        data = builder.ToString();
                    }

                    // If tokens are the only option we've received, we don't need to parse
                    if (options == Grammar.ParseOption.Tokens)
                    {
                        DisplayTokens(grammar, data);
                        return;
                    }

                    // Now we attempt to parse, but still handle a lexer-only grammar.
                    if (grammar.Parser != null)
                    {
                        var analyzer      = new Analyzer();
                        var grammarParser = analyzer.BuildParserWithOptions(grammar, data, options);
                        analyzer.ExecuteParsing(grammarParser, o.RuleName);

                        if (showParseTree)
                        {
                            Console.WriteLine(analyzer.ParserContext.ToStringTree(grammarParser));
                        }

                        if (writeSvg)
                        {
                            var rules   = scanner.GetParserRulesForGrammarParser(grammar.Parser);
                            var grapher = new ParseTreeGrapher()
                            {
                                BackgroundColor = _Settings.GraphNodeBackgroundColor.GetMsAglColor(),
                                BorderColor     = _Settings.GraphNodeBorderColor.GetMsAglColor(),
                                TextColor       = _Settings.GraphNodeTextColor.GetMsAglColor()
                            };
                            var graph = grapher.CreateGraph(analyzer.ParserContext, rules.ToList());
                            graph.LayoutAlgorithmSettings = new SugiyamaLayoutSettings();
                            GraphRenderer renderer        = new GraphRenderer(graph);
                            renderer.CalculateLayout();
                            graph.EscapeNodesForSvg();
                            SvgGraphWriter.Write(graph, o.SvgFileName, null, null, 4);
                        }
                    }
                    else
                    {
                        if (options.HasFlag(ParseOption.Tokens))
                        {
                            DisplayTokens(grammar, data);
                        }

                        if (showParseTree || writeSvg)
                        {
                            Console.WriteLine(Resources.GrammarHasNoParserErrorMessage, grammar.GrammarName);
                        }
                        if (showParseTree)
                        {
                            Console.WriteLine(Resources.UnableToDisplayParseTree);
                        }
                        if (writeSvg)
                        {
                            Console.WriteLine(Resources.SvgWritingAbortedErrorMessage);
                        }
                    }

                    if (loadGui)
                    {
                        LoadGui(data, grammar, o.RuleName);
                    }
                })
                .WithNotParsed(errs => DisplayHelp(parserResult, errs));

#if DEBUG
                Console.WriteLine(Resources.PressAnyKeyMessage);
                Console.ReadKey();
#endif
            }
            // ReSharper disable once CatchAllClause
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
#if DEBUG
                Console.WriteLine(Resources.PressAnyKeyMessage);
                Console.ReadKey();
#endif
            }
        }
Пример #30
0
 /// <summary>Event handler for clicks on menu buttons.</summary>
 private void MenuClick(object sender, EventArgs e)
 {
     if (sender == menuItemOpen)
     {
         if (openFileDialog.ShowDialog() == DialogResult.OK)
         {
             Text     = "Monotree - " + Regex.Replace(openFileDialog.FileName, @"^.*\\", "");
             database = new Database(openFileDialog.FileName);
             List <string> names = database.GetBranchNames();
             toolStripBranches.Items.Clear();
             if (names.Count > 0)
             {
                 foreach (string name in names)
                 {
                     toolStripBranches.Items.Add(name);
                 }
                 toolStripBranches.SelectedIndex = 0;
                 InitGUI();
                 toolStripRefresh.PerformClick();
             }
         }
     }
     else if (sender == menuItemSave)
     {
         saveFileDialog.Title      = "Save As";
         saveFileDialog.Filter     = "PNG (*.png)|*.png";
         saveFileDialog.DefaultExt = ".png";
         saveFileDialog.FileName   = Regex.Replace(database.FileName, @"\.[^.]*$", ".png");
         if (saveFileDialog.ShowDialog() == DialogResult.OK)
         {
             GraphRenderer renderer = new GraphRenderer(CreateGraph(revs));
             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;
         }
     }
     else if (sender == menuItemExit)
     {
         Close();
     }
     else if (sender == menuItemStatusBar)
     {
         statusStripMain.Visible = menuItemStatusBar.Checked;
     }
     else if (sender == menuItemCompress)
     {
         saveFileDialog.Title      = "Compress";
         saveFileDialog.Filter     = "MTN (*.mtn)|*.mtn";
         saveFileDialog.DefaultExt = ".mtn";
         saveFileDialog.FileName   = Regex.Replace(database.FileName, @"\.[^.]*$", ".mtn");
         if (saveFileDialog.ShowDialog() == DialogResult.OK)
         {
             if (database.FileName.Equals(saveFileDialog.FileName))
             {
                 MessageBox.Show("The database is currently open and can't be overwritten.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
             }
             else
             {
                 Thread thread = new Thread(delegate()
                 {
                     File.Copy(database.FileName, saveFileDialog.FileName);
                     Database db = new Database(saveFileDialog.FileName);
                     db.Compress();
                 });
                 thread.Start();
             }
         }
     }
     else if (sender == menuItemOptions)
     {
         Options options = new Options();
         options.Pages.Add(new GeneralOptions());
         options.Pages.Add(new DisplayOptions());
         if (options.ShowDialog() == DialogResult.OK)
         {
             colors.Clear();
         }
     }
     else if (sender == menuItemAbout)
     {
         About about = new About();
         about.ShowDialog();
     }
     else if (sender == ctxMenuItemCopyRevisionID)
     {
         if (activeRev != null)
         {
             Clipboard.SetText(activeRev.ID);
         }
     }
 }
Пример #31
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);
 }
Пример #32
0
        // Tampilkan Graph
        private void RenderGraph()
        {
            // Membuat graph dan renderer utnuk graph
            Graph         g        = bfstool.getGraph();
            GraphRenderer renderer = new GraphRenderer(g);

            renderer.CalculateLayout();

            // Setup ukuran graph
            int height = 400;
            int width  = (int)(g.Width * (height / g.Height));

            if (g.Width > g.Height)
            {
                width  = 400;
                height = (int)(g.Height * (width / g.Width));;
            }

            int numdays = Decimal.ToInt32(ndays.Value);

            // Untuk setiap kota
            foreach (string cityTo in bfstool.getNodes())
            {
                // Warnai kota tsb putih pada graph
                g.FindNode(cityTo).Attr.FillColor = Microsoft.Msagl.Drawing.Color.White;

                // Ambil kota yang menginfeksinya dan berapa hari sebelum infeksi
                foreach (KeyValuePair <string, int> pair in bfstool.getNode(cityTo).GetInfecters())
                {
                    string cityFrom = pair.Key;
                    int    days     = pair.Value;

                    Edge e = bfstool.getEdge(cityFrom, cityTo);

                    if (days <= numdays)
                    {
                        // Warnai edge merah jika pada hari sudah terinfeksi pada numdays
                        e.Attr.Color = Microsoft.Msagl.Drawing.Color.Red;
                    }
                    else
                    {
                        // Warnai edge hitam jika pada hari sudah terinfeksi pada numdays
                        e.Attr.Color = Microsoft.Msagl.Drawing.Color.Black;
                    }
                }
            }


            // Untuk setiap pasangan kota dan waktu sampai kota tersebut terinfeksi
            foreach (KeyValuePair <string, double> pair in bfstool.getInfections())
            {
                string city = pair.Key;
                double time = pair.Value;
                if (time <= numdays)
                {
                    // Warnai node merah jika terinfeksi
                    g.FindNode(city).Attr.FillColor = Microsoft.Msagl.Drawing.Color.Red;
                }
            }

            // Render gambar, masukkan ke picturebox picbox
            g.Attr.BackgroundColor = Microsoft.Msagl.Drawing.Color.DarkSeaGreen;
            Bitmap bitmap = new Bitmap(width, height, PixelFormat.Format32bppPArgb);

            renderer.Render(bitmap);
            picbox.Image = bitmap;
        }