void CreateNodeGeometry(DrawingNode node, Graph graph, GeometryGraph geometryGraph, GeometryPoint center, ConnectionToGraph connectionTo = ConnectionToGraph.Connected) { double width, height; StringMeasure.MeasureWithFont(node.Label.Text, new Font(node.Label.FontName, (float)node.Label.FontSize, (System.Drawing.FontStyle)(int) node.Label.FontStyle), out width, out height); node.Label.Width = width; node.Label.Height = height; if (node.Label != null) { width += 2 * node.Attr.LabelMargin; height += 2 * node.Attr.LabelMargin; } if (width < graph.Attr.MinNodeWidth) { width = graph.Attr.MinNodeWidth; } if (height < graph.Attr.MinNodeHeight) { height = graph.Attr.MinNodeHeight; } Node geomNode = node.GeometryNode = GeometryGraphCreator.CreateGeometryNode(graph, geometryGraph, node, connectionTo); geomNode.BoundaryCurve = NodeBoundaryCurves.GetNodeBoundaryCurve(node, width, height); geomNode.BoundaryCurve.Translate(center); geomNode.Center = center; }
public static IViewerNode addVnodeByDnode(GraphViewer gv, Node node, DPoint pos) { var graph = gv.Graph; Debug.Assert(node.GeometryNode == null); LNode lnode = GeometryGraphCreator.CreateGeometryNode(graph, graph.GeometryGraph, node, ConnectionToGraph.Disconnected); var labelSize = Common.MeasureLabel(node.Label); var mar = node.Attr.LabelMargin; lnode.BoundaryCurve = NodeBoundaryCurves.GetNodeBoundaryCurve(node, labelSize.Width + mar * 2, labelSize.Height + mar * 2); node.GeometryNode = lnode; var vnode = gv.CreateIViewerNode(node, pos, null); return(vnode); }
public static IViewerNode addNode(GraphViewer gv, string id, double x, double y) { //var node = new Node(id); var graph = gv.Graph; var node = graph.AddNode(id); var lnode = GeometryGraphCreator.CreateGeometryNode(graph, graph.GeometryGraph, node, ConnectionToGraph.Disconnected); var labelSize = Common.MeasureLabel(node.Label); lnode.BoundaryCurve = NodeBoundaryCurves.GetNodeBoundaryCurve(node, labelSize.Width, labelSize.Height); node.GeometryNode = lnode; var vnode = gv.CreateIViewerNode(node, new DPoint(x, y), null); return(vnode); //gv.AddNode(vnode, true); //gv.CreateVNode(node); }
void InsertNodeIntoGraph(Rectangle rectangle) { Node node = new Node("testNode"); node.Attr.FillColor = Color.Red; node.Attr.Shape = Shape.DrawFromGeometry; node.Label = null; var geomNode = node.GeometryNode = GeometryGraphCreator.CreateGeometryNode(gViewer.Graph, gViewer.Graph.GeometryGraph, node, ConnectionToGraph.Disconnected); var center = (rectangle.LeftBottom + rectangle.RightTop) / 2; geomNode.BoundaryCurve = CurveFactory.CreateRectangle(rectangle.Width, rectangle.Height, center); node.GeometryNode = geomNode; var dNode = gViewer.CreateIViewerNode(node); gViewer.AddNode(dNode, true); }
private void InitPalette() { foreach (var type in this.graph.GetNodeTypes()) { var button = new Button { Text = type.Name, Dock = DockStyle.Bottom }; button.Click += (sender, args) => { var node = this.graph.CreateNewNode(type); node.GeometryNode = GeometryGraphCreator.CreateGeometryNode(this.viewer.Graph, this.viewer.Graph.GeometryGraph, node, ConnectionToGraph.Disconnected); var viewNode = this.viewer.CreateIViewerNode(node, this.viewer.Graph.Nodes.ToList()[0].Pos - new Point(250, 0), null); this.viewer.AddNode(viewNode, true); this.viewer.Graph.AddNode(node); this.viewer.Invalidate(); }; button.Font = new Font(button.Font.FontFamily, fontSize); button.Size = new Size(button.Width, button.Height + 10); this.paletteGrid.Controls.Add(button, 0, this.paletteGrid.RowCount - 1); ++this.paletteGrid.RowCount; } }
public static IViewerNode addNodeWithStyles(GraphViewer gv, string id, DPoint pos, ICollection <Style> styles) { var graph = gv.Graph; var node = graph.AddNode(id); if (styles != null) { foreach (var s in styles) { node.Attr.AddStyle(s); } } var lnode = GeometryGraphCreator.CreateGeometryNode(graph, graph.GeometryGraph, node, ConnectionToGraph.Disconnected); var labelSize = Common.MeasureLabel(node.Label); var mar = node.Attr.LabelMargin; lnode.BoundaryCurve = NodeBoundaryCurves.GetNodeBoundaryCurve(node, labelSize.Width + mar * 2, labelSize.Height + mar * 2); node.GeometryNode = lnode; var vnode = gv.CreateIViewerNode(node, pos, null); return(vnode); }