You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm trying to define the size of a node explicitly. I've tried setting the label width/height as well as setting the node's boundarycurve. Both does to seem to make any effect of the node size.
Below is my sample code.
What am I missing?
Microsoft.Msagl.Drawing.Graph graph = new Microsoft.Msagl.Drawing.Graph("");
graph.AddEdge("A", "B");
graph.AddEdge("B", "C");
int nwidth = 100;
int nheight = 100;
var geometryGraph = graph.CreateGeometryGraph();
var n = graph.FindNode("A");
n.Label.GeometryLabel = new Microsoft.Msagl.Core.Layout.Label();
n.Label.GeometryLabel.Width = nwidth;
n.Label.GeometryLabel.Height = nwidth;
n.Label.Width = nwidth;
n.Label.Height = nheight;
int r = n.Attr.LabelMargin;
n.GeometryNode.BoundaryCurve = CurveFactory.CreateRectangleWithRoundedCorners(nwidth + r * 2, nheight + r * 2, r, r, new Point());
graph.Attr.LayerDirection = LayerDirection.LR;
geometryGraph.UpdateBoundingBox();
Microsoft.Msagl.GraphViewerGdi.GraphRenderer renderer = new Microsoft.Msagl.GraphViewerGdi.GraphRenderer(graph);
renderer.CalculateLayout();
int width = 1500;
Bitmap bitmap = new Bitmap(width, (int)(graph.Height * (width / graph.Width)), PixelFormat.Format32bppPArgb);
renderer.Render(bitmap);
bitmap.Save("c:\\temp\\test.png");
The text was updated successfully, but these errors were encountered:
It seems GraphRenderer creates new geometry blindly, even when the drawing graph already has the geometry associated with it. The way to control the shape of the nodes is to use a delegate for the geometry node boundary curve: the code below demonstrates it:
` Microsoft.Msagl.Drawing.Graph graph = new Microsoft.Msagl.Drawing.Graph("");
graph.AddEdge("A", "B");
graph.AddEdge("B", "C");
int nwidth = 100;
int nheight = 100;
var n = graph.FindNode("A");
int r = n.Attr.LabelMargin;
n.NodeBoundaryDelegate = new DelegateToSetNodeBoundary(p => CurveFactory.CreateRectangleWithRoundedCorners(nwidth + r * 2, nheight + r * 2, r, r, new Microsoft.Msagl.Core.Geometry.Point()));
graph.Attr.LayerDirection = LayerDirection.LR;
Microsoft.Msagl.GraphViewerGdi.GraphRenderer renderer = new Microsoft.Msagl.GraphViewerGdi.GraphRenderer(graph);
renderer.CalculateLayout();
int lwidth = 1500;
Bitmap bitmap = new Bitmap(lwidth, (int)(graph.Height * (lwidth / graph.Width)), PixelFormat.Format32bppPArgb);
renderer.Render(bitmap);
bitmap.Save("c:\\tmp\\test.png");`
I'm trying to define the size of a node explicitly. I've tried setting the label width/height as well as setting the node's boundarycurve. Both does to seem to make any effect of the node size.
Below is my sample code.
What am I missing?
The text was updated successfully, but these errors were encountered: