Пример #1
0
            private Image GetPieGraph()
            {
                var ru = new RandomUtil();
                var pg = new PieGraph(Size);

                pg.Color         = Color.White;
                pg.ColorGradient = Color.Orange;
                var legend = new Legend(Width, 70);

                legend.Text = string.Empty;
                pg.Text     = _displayString + " Total: " + _totalComponents.ToString();
                var keys = _componentInfoTable.Keys;
                var ie   = keys.GetEnumerator();

                while (ie.MoveNext())
                {
                    Type          key = (Type)ie.Current;
                    ComponentInfo ci  = (ComponentInfo)_componentInfoTable[key];
                    var           ps  = new PieSlice(ci.Count, ci.Color);
                    pg.Slices.Add(ps);
                    var le = new LegendEntry(ci.Color, ci.Type.Name.ToString().Trim());
                    legend.LegendEntryCollection.Add(le);
                }

                return(GraphRenderer.DrawGraphAndLegend(pg, legend, Size));
            }
Пример #2
0
        public override void RenderContent(Graphics graphics)
        {
            var size = ContentBounds.Size;

            using (var path = GraphRenderer.CreateRoundedRectangle(size, ContentBounds.Location))
            {
                var rect = ContentBounds;
                if (this.Checked)
                {
                    using (var brush = new SolidBrush(Color.FromArgb(128 + 32, Color.White)))
                    {
                        graphics.FillPath(brush, path);
                    }
                }
                else
                {
                    using (var brush = new SolidBrush(Color.FromArgb(64, Color.Black)))
                    {
                        graphics.FillPath(brush, path);
                    }
                }
                graphics.DrawString(this.Text, SystemFonts.MenuFont, Node.TextColor, rect, GraphConstants.CenterTextStringFormat);

                if ((state & RenderState.Hover) != 0)
                {
                    graphics.DrawPath(Pens.White, path);
                }
                else
                {
                    graphics.DrawPath(Pens.Black, path);
                }
            }
        }
Пример #3
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);
        }
Пример #5
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);
        }
Пример #6
0
        public MainWindow()
        {
            if (Instance == null)
            {
                Instance = this;
            }

            InitializeComponent();



            Graph = GraphGenerator.generatorRegular(2);

            GraphRenderer = new GraphRenderer(Graph, GraphControl, VM);

            GraphListControl.DataContext = new GraphListViewModel();

            GraphControl.OnTwoNodeClickEvent += ConnectTwoNodes;
            GraphControl.OnLineClick         += createWeight;


            Graph.OnChange += onGraphChange;
            onGraphChange();

            this.DataContext = VM;
        }
 private void Initialize()
 {
     graph           = new Graph();
     fdg             = new ForceDirected3D(graph, Stiffness, Repulsion, Damping);
     fdg.Threadshold = Threadshold;
     graphRenderer   = new GraphRenderer(this, fdg);
 }
Пример #8
0
    /// <summary>
    /// Starts a graph with the given values.
    /// </summary>
    /// <param name="values">A list of floats which you want to display. Can be empty.</param>
    /// <param name="displayedSeconds">How many seconds you want to display (time frame).</param>
    public void Initialize(List <float> values, float displayedSeconds)
    {
        // return when the function is called with bad values
        if (values == null)
        {
            values = new List <float>();
        }
        if (displayedSeconds < 2 * Time.deltaTime)
        {
            Debug.Log("Cannot start a graph with less than 2 points!");
            return;
        }

        m_GraphRenderer = gameObject.AddComponent <GraphRenderer>();

        // fill the list if necessary
        if (values.Count < m_DisplayedPointsCount)
        {
            m_Values = values;
            m_Values.AddRange(Enumerable.Repeat(m_DefaultValue, m_DisplayedPointsCount).ToList());
        }
        // init values
        m_Values = values;
        // init graph renderer
        m_GraphRenderer.Initialize(m_Values, m_DisplayedPointsCount);
        DisplayForNumberOfSeconds(displayedSeconds);
    }
Пример #9
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);
        }
Пример #10
0
        public void OnGet(string font, ushort index = 0)
        {
            if (!_typefaces.ContainsKey(font))
            {
                font = "Roboto-Regular.ttf";
            }

            if (index < 0 || _typefaces[font].GlyphCount <= index)
            {
                index = 0;
            }

            var tf               = _typefaces[font];
            var emsize           = 200;
            var renderer         = new GraphRenderer();
            var typefaceGeometry = tf.GetGlyphOutline(index, emsize);

            Graph = renderer.CreateGraph(
                typefaceGeometry,
                tf.Baseline,
                tf.AdvanceWidths[index],
                tf.AdvanceHeights[index],
                tf.LeftSideBearings[index],
                tf.RightSideBearings[index],
                tf.TopSideBearings[index],
                tf.BottomSideBearings[index],
                emsize);
        }
Пример #11
0
        internal override void Render(Graphics graphics, SizeF minimumSize, PointF location)
        {
            var size = Measure(graphics);

            size.Width  = Math.Max(minimumSize.Width, size.Width);
            size.Height = Math.Max(minimumSize.Height, size.Height);

            var path = GraphRenderer.CreateRoundedRectangle(size, location);

            graphics.FillPath(background, path);

            location.Y += 1;
            location.X += 1;

            if ((state & RenderState.Hover) == RenderState.Hover)
            {
                graphics.DrawPath(Pens.White, path);
                graphics.DrawString(this.FormattedText, SystemFonts.MenuFont, Brushes.Black, new RectangleF(location, size), GraphConstants.LeftTextStringFormat);
            }
            else
            {
                graphics.DrawPath(Pens.Black, path);
                graphics.DrawString(this.FormattedText, SystemFonts.MenuFont, Brushes.Black, new RectangleF(location, size), GraphConstants.LeftTextStringFormat);
            }
        }
Пример #12
0
            private Image GetBarGraph()
            {
                RandomUtil ru = new RandomUtil();
                BarGraph   bg = new BarGraph(this.Size);

                bg.Color         = Color.White;
                bg.ColorGradient = Color.Orange;

                Legend legend = new Legend(this.Width, 70);

                legend.Text = String.Empty;
                bg.Text     = _displayString + " Total: " + _totalComponents.ToString();

                ICollection keys = _componentInfoTable.Keys;
                IEnumerator ie   = keys.GetEnumerator();

                while (ie.MoveNext())
                {
                    Type          key = (Type)ie.Current;
                    ComponentInfo ci  = (ComponentInfo)_componentInfoTable[key];
                    BarSlice      bs  = new BarSlice(ci.Count, ci.Color);

                    bg.BarSliceCollection.Add(bs);

                    LegendEntry le = new LegendEntry(ci.Color, ci.Type.Name.ToString().Trim());

                    legend.LegendEntryCollection.Add(le);
                }

                return(GraphRenderer.DrawGraphAndLegend(bg, legend, this.Size));
            }
Пример #13
0
        internal override void Render(Graphics graphics, SizeF minimumSize, PointF location)
        {
            var text = string.Empty;

            if (Items != null &&
                SelectedIndex >= 0 && SelectedIndex < Items.Length)
            {
                text = Items[SelectedIndex];
            }

            var size = Measure(graphics);

            size.Width  = Math.Max(minimumSize.Width, size.Width);
            size.Height = Math.Max(minimumSize.Height, size.Height);

            var path = GraphRenderer.CreateRoundedRectangle(size, location);

            location.Y += 1;
            location.X += 1;

            if ((state & RenderState.Hover) == RenderState.Hover)
            {
                graphics.DrawPath(Pens.White, path);
                graphics.DrawString(text, SystemFonts.MenuFont, Brushes.Black, new RectangleF(location, size), GraphConstants.LeftTextStringFormat);
            }
            else
            {
                graphics.DrawPath(Pens.Black, path);
                graphics.DrawString(text, SystemFonts.MenuFont, Brushes.Black, new RectangleF(location, size), GraphConstants.LeftTextStringFormat);
            }
        }
Пример #14
0
        public override void RenderContent(Graphics graphics)
        {
            var text = string.Empty;

            if (Items != null &&
                SelectedIndex >= 0 && SelectedIndex < Items.Length)
            {
                text = Items[SelectedIndex];
            }



            var path = GraphRenderer.CreateRoundedRectangle(ContentBounds.Size, ContentBounds.Location);

            var location = ContentBounds.Location;

            location.Y += 1;
            location.X += 1;

            if ((state & RenderState.Hover) == RenderState.Hover)
            {
                graphics.DrawPath(Pens.White, path);
                graphics.DrawString(text, SystemFonts.MenuFont, Node.TextColor, new RectangleF(location, ContentBounds.Size), GraphConstants.LeftTextStringFormat);
            }
            else
            {
                graphics.DrawPath(Pens.Black, path);
                graphics.DrawString(text, SystemFonts.MenuFont, Node.TextColor, new RectangleF(location, ContentBounds.Size), GraphConstants.LeftTextStringFormat);
            }
        }
 void Awake()
 {
     Singleton  = this;
     graph      = new Graph(InitializeGraphBackend());
     graphScene = new GraphScene(graph, graphScenePrefabs);
     ResultPanel.SetActive(false);
     ResultText.gameObject.SetActive(false);
 }
Пример #16
0
        private void RedrawGraph(Graph graph, Func <Node, Size, UserControl> controlBuilder, Size nodeSize)
        {
            var renderer = new GraphRenderer(graphCanvas, controlBuilder, nodeSize);
            var layout   = new GraphLayoutEngine();

            layout.Layout(graph);
            renderer.Render(graph);
        }
Пример #17
0
        internal override void Render(Graphics graphics, SizeF minimumSize, PointF location)
        {
            var size = Measure(graphics);

            size.Width  = Math.Max(minimumSize.Width, size.Width);
            size.Height = Math.Max(minimumSize.Height, size.Height);

            var sliderOffset = Spacing + this.textSize.Width;
            var sliderWidth  = size.Width - (Spacing + this.textSize.Width);

            var textRect   = new RectangleF(location, size);
            var sliderBox  = new RectangleF(location, size);
            var sliderRect = new RectangleF(location, size);

            sliderRect.X      = sliderRect.Right - sliderWidth;
            sliderRect.Y     += ((sliderRect.Bottom - sliderRect.Top) - SliderHeight) / 2.0f;
            sliderRect.Width  = sliderWidth;
            sliderRect.Height = SliderHeight;
            textRect.Width   -= sliderWidth + Spacing;

            var valueSize = (this.MaxValue - this.MinValue);

            this.sliderRect        = sliderRect;
            this.sliderRect.Width -= SliderBoxSize;
            this.sliderRect.X     += SliderBoxSize / 2.0f;

            sliderBox.Width = SliderBoxSize;
            sliderBox.X     = sliderRect.X + (this.Value * this.sliderRect.Width) / valueSize;

            graphics.DrawString(this.Text, SystemFonts.MenuFont, Brushes.Black, textRect, GraphConstants.LeftTextStringFormat);

            using (var path = GraphRenderer.CreateRoundedRectangle(sliderRect.Size, sliderRect.Location))
            {
                if ((state & (RenderState.Hover | RenderState.Dragging)) != 0)
                {
                    graphics.DrawPath(Pens.White, path);
                }
                else
                {
                    graphics.DrawPath(Pens.Black, path);
                }
            }

            graphics.FillRectangle(Brushes.LightGray, sliderBox.X, sliderBox.Y, sliderBox.Width, sliderBox.Height);

            if ((state & (RenderState.Hover | RenderState.Dragging)) != 0)
            {
                graphics.DrawRectangle(Pens.White, sliderBox.X, sliderBox.Y, sliderBox.Width, sliderBox.Height);
            }
            else
            {
                graphics.DrawRectangle(Pens.Black, sliderBox.X, sliderBox.Y, sliderBox.Width, sliderBox.Height);
            }
        }
Пример #18
0
 private void WindowReset()
 {
     AllReset();
     myGraphRenderer = new GraphRenderer();
     ChangeStyle("默认样式");
     StatusUpdateTimer_Init();
     myGdb = new Graph(myDataBasePath);
     FillNodeList();
     myIsModified    = false;
     myIsDbAvailable = true;
 }
        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);
        }
Пример #20
0
        private void DrawGeneralStats()
        {
            spriteBatch.Begin();
            Primitives2D.FillRectangle(spriteBatch, new Rectangle(0, 0, 300, 600), AdditionalColors.TRANSPARENTBLACK);
            spriteBatch.DrawString(Fonts.FontArial, "#: " + Creatures.Count, new Vector2(20, 20), Color.Red);
            spriteBatch.DrawString(Fonts.FontArial, "D: " + numberOfDeaths, new Vector2(20, 40), Color.Red);
            spriteBatch.DrawString(Fonts.FontArial, "max(G): " + Creature.maximumGeneration, new Vector2(20, 60), Color.Red);
            spriteBatch.DrawString(Fonts.FontArial, "Y: " + year, new Vector2(20, 80), Color.Red);
            spriteBatch.DrawString(Fonts.FontArial, "LS: " + Creature.oldestCreatureEver.Age + " g: " + Creature.oldestCreatureEver.Generation, new Vector2(20, 100), Color.Red);
            spriteBatch.DrawString(Fonts.FontArial, "LSA: " + OldestCreatureAlive.Age + " g: " + OldestCreatureAlive.Generation, new Vector2(20, 120), Color.Red);
            if (AverageAgeOfLastCreaturesAccurate)
            {
                float averageDeathAge = CalculateAverageAgeOfLastDeadCreatures();
                AverageDeathAgeRecord.Add(averageDeathAge);
                spriteBatch.DrawString(Fonts.FontArial, "AvgDA: " + averageDeathAge, new Vector2(20, 140), Color.Red);
            }

            if (EvoGame.Instance.inputManager.EnableFastForward)
            {
                spriteBatch.DrawString(Fonts.FontArial, "Graph rendering disabled", new Vector2(20, 180), Color.Red);
                spriteBatch.DrawString(Fonts.FontArial, "during fast forward!", new Vector2(20, 200), Color.Red);
            }
            else
            {
                spriteBatch.DrawString(Fonts.FontArial, "Creatures Alive Graph ", new Vector2(20, 180), Color.Red);
                GraphRenderer.RenderGraph(spriteBatch, new Rectangle(20, 200, 260, 100), Color.Blue, AliveCreaturesRecord, Fonts.FontArial, true);
                spriteBatch.DrawString(Fonts.FontArial, "Average Age on Death Graph ", new Vector2(20, 320), Color.Red);
                if (AverageAgeOfLastCreaturesAccurate)
                {
                    GraphRenderer.RenderGraph(spriteBatch, new Rectangle(20, 340, 260, 100), Color.Red, AverageDeathAgeRecord, Fonts.FontArial, true);
                }
                spriteBatch.DrawString(Fonts.FontArial, "Food Available Graph ", new Vector2(20, 460), Color.Red);
                GraphRenderer.RenderGraph(spriteBatch, new Rectangle(20, 480, 260, 100), Color.Green, EvoGame.Instance.tileMap.FoodRecord, Fonts.FontArial, true);
            }


            if (SelectedCreature != null)
            {
                Primitives2D.FillRectangle(spriteBatch, new Rectangle(800, 0, 500, 450), AdditionalColors.TRANSPARENTBLACK);

                spriteBatch.DrawString(Fonts.FontArial, "Selected Creature: ", new Vector2(820, 50), Color.Red);
                spriteBatch.DrawString(Fonts.FontArial, "A: " + SelectedCreature.Age, new Vector2(820, 70), Color.Red);
                spriteBatch.DrawString(Fonts.FontArial, "E: " + SelectedCreature.Energy, new Vector2(820, 90), Color.Red);
                spriteBatch.DrawString(Fonts.FontArial, "C: " + SelectedCreature.Children.Count, new Vector2(820, 110), Color.Red);
                spriteBatch.DrawString(Fonts.FontArial, "G: " + SelectedCreature.Generation, new Vector2(820, 130), Color.Red);
                spriteBatch.DrawString(Fonts.FontArial, "S: " + (SelectedCreature.Energy > 100 ? "Alive" : "Dead"), new Vector2(820, 150), Color.Red);
                SelectedCreature.DrawCreature(spriteBatch, SelectedCreature.Pos * -1 + new Vector2(1050, 70));
                SelectedCreature.Brain.Draw(spriteBatch, new Rectangle(950, 160, 200, 250));
            }

            spriteBatch.End();
        }
Пример #21
0
        private void UpdateGraph()
        {
            var includeDescriptions = buttonDescriptions.Checked;
            var labelFont           = string.Empty;
            var renderer            = new GraphRenderer(includeDescriptions, labelFont, 12);

            showGraph.Image = renderer.Render(mProjects);

            bool haveGraph = showGraph.Image != null;

            buttonSave.Enabled  = haveGraph;
            paneWelcome.Visible = !haveGraph;
            showGraph.Visible   = haveGraph;
        }
Пример #22
0
        private void DrawGraph(Graphics g, int w, int h, float scale, Graph graph, GraphRenderer renderer)
        {
            var num1 = (float)(0.5 * w - scale * (graph.Left + 0.5 * graph.Width));
            var num2 = (float)(0.5 * h + scale * (graph.Bottom + 0.5 * graph.Height));

            using (var brush = new SolidBrush(Draw.MsaglColorToDrawingColor(graph.Attr.BackgroundColor)))
                g.FillRectangle(brush, 0, 0, w, h);

            using (var matrix = new Matrix(scale, 0f, 0f, -scale, num1, num2))
            {
                g.Transform = matrix;
                Draw.DrawPrecalculatedLayoutObject(g, renderer);
            }
        }
Пример #23
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");
        }
Пример #24
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);
        }
Пример #25
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);
        }
Пример #26
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);
            }
        }
Пример #27
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);
        }
Пример #28
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);
        }
Пример #30
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");
        }
Пример #31
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);
            }
        }
Пример #32
0
        /// <summary>
        /// Generate an image based on our configuration
        /// </summary>
        public void Generate()
        {
            if (mBuildFiles.Count == 0)
            {
                throw new InvalidOperationException(
                          "No Build files specified");
            }

            if (string.IsNullOrEmpty(mOutputFile))
            {
                mOutputFile
                    = Path.ChangeExtension(
                          mBuildFiles.First(),
                          ".png");
            }

            var projects
                = mBuildFiles.Select(f => LoadNAntProject(f))
                  .ToList();

            Console.WriteLine("Generating Graph");
            var   renderer = new GraphRenderer(mShowDescriptions, mFontName, mFontSize);
            Image graph    = renderer.Render(projects);

            if (graph != null)
            {
                Console.WriteLine("Saving graph image to {0}", mOutputFile);
                graph.Save(mOutputFile);
            }
            else
            {
                Console.WriteLine("Failed to generate image.");
            }

            if (!string.IsNullOrEmpty(mDotFile))
            {
                Console.WriteLine("Saving dot script file to {0}", mDotFile);
                using (var dotFile = new FileStream(mDotFile, FileMode.Create))
                {
                    using (var writer = new StreamWriter(dotFile))
                    {
                        writer.Write(renderer.DotScript);
                    }

                    dotFile.Close();
                }
            }
        }
Пример #33
0
    void OnGUI()
    {
        GUILayout.BeginVertical();
        DoToolbar();

        if (m_CurrentGraph == null)
            return;

        if (m_Renderer == null)
            m_Renderer = new GraphRenderer();

        GUILayout.EndVertical();

        var graphRect = new Rect(0, k_ToolbarHeight, position.width, position.height - k_ToolbarHeight);
        if (m_Layout != null)
            m_Renderer.Draw(m_Layout, graphRect);
    }
Пример #34
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);
 }