Example #1
0
        public void init_graph(string tag)
        {
            if (tag != "")
            {
                var result = HitomiAnalysisRelatedTags.Instance.result[tag];

                int index  = 0;
                int eindex = 0;

                GraphVertex v = new GraphVertex();
                v.Index     = index++;
                v.Color     = Color.White;
                v.InnerText = tag;
                v.OuterText = "";
                v.Radius    = 100.0F;
                v.Nodes     = new List <Tuple <GraphVertex, GraphEdge> >();

                foreach (var ld in result)
                {
                    GraphVertex vt = new GraphVertex();
                    GraphEdge   et = new GraphEdge();
                    vt.Index     = index++;
                    vt.Color     = Color.WhiteSmoke;
                    vt.InnerText = ld.Item1;
                    vt.Radius    = 100.0F;
                    vt.OuterText = "";

                    et.StartsIndex   = 0;
                    et.EndsIndex     = vt.Index;
                    et.Index         = eindex++;
                    et.Text          = ld.Item2.ToString().Substring(0, Math.Min(5, ld.Item2.ToString().Length));
                    et.SelectionText = "";
                    et.Thickness     = 6.0F;
                    et.Color         = Color.Black;

                    v.Nodes.Add(new Tuple <GraphVertex, GraphEdge>(vt, et));
                }
                List <Tuple <Point, double> > edges = new List <Tuple <Point, double> >();
                for (int i = 0; i < v.Nodes.Count; i++)
                {
                    for (int j = i + 1; j < v.Nodes.Count; j++)
                    {
                        var list = HitomiAnalysisRelatedTags.Instance.result[v.Nodes[i].Item1.InnerText].Where(x => x.Item1 == v.Nodes[j].Item1.InnerText);

                        if (list.Count() > 0)
                        {
                            edges.Add(new Tuple <Point, double>(new Point(i + 1, j + 1), list.ToList()[0].Item2));
                        }
                    }
                }
                GetGNM().Nomalize(v, edges);
            }
        }
Example #2
0
        public void DrawEdge(Graphics g, GraphEdge e, Size sizeOfPannel)
        {
            RectangleF draw_rect = new RectangleF(
                Math.Min(e.Starts.X, e.Ends.X),
                Math.Min(e.Starts.Y, e.Ends.Y),
                Math.Max(e.Starts.X, e.Ends.X) - Math.Min(e.Starts.X, e.Ends.X),
                Math.Max(e.Starts.Y, e.Ends.Y) - Math.Min(e.Starts.Y, e.Ends.Y));

            if (RectangleF.Intersect(new Rectangle(-bp.X, -bp.Y, sizeOfPannel.Width, sizeOfPannel.Height), draw_rect) != Rectangle.Empty)
            {
                g.DrawLine(new Pen(e.Color, e.Thickness), e.Starts, e.Ends);
                stayed_string.Add(new Tuple <RectangleF, string>(draw_rect, e.Text));
            }
        }