Nevron Forum

Can't add a NRectange to NComposite

https://www.nevron.com/Forum/Topic8840.aspx

By Hans Henrik Friis Pedersen - Wednesday, December 3, 2014

Hi,

1) Why can't I add a rectange to NComposite?
2) How do I then add a rectange to a Composite? I have to make the rectange using a Polygon?


NCompositeShape shape = new NCompositeShape();
NRectangleShape rectx = new NRectangleShape(new NRectangleF(150, 150, 50, 50));

NShape rect2 = factory.CreateShape(BasicShapes.Rectangle);
rect2.Bounds = new NRectangleF(250, 200, 75, 75);
rect2.CreateShapeElements(ShapeElementsMask.Ports);
rect2.Style.FillStyle = new NColorFillStyle(Color.Empty);

NPolygonPath cup = new NPolygonPath(new NPointF[]{ new NPointF(45, 268),
  new NPointF(63, 331),
  new NPointF(121, 331),
  new NPointF(140, 268)});

//document1.ActiveLayer.AddChild(rect2);
shape.Primitives.AddChild(cup);
shape.Primitives.AddChild(rectx); // an exception is raised here
shape.Primitives.AddChild(rect2);// an exception is raised here

By Nevron Support - Friday, December 5, 2014

Hi, composite shape primitives should be paths, not other shapes. That is why your code is not working. You should use NRectanglePath instead of NRectangleShape. Check out the Composite Shapes documentation topic for more information.