private NShape CreateFlexiArrow2Shape(NPoint from, NPoint to) { NShape shape = new NShape(); shape.Init1DShape(EN1DShapeXForm.Vector); shape.Height = 0; shape.BeginX = from.X; shape.BeginY = from.Y; shape.EndX = to.X; shape.EndY = to.Y; // add controls NControl controlPoint = new NControl(); controlPoint.SetFx("X", "13.0956"); controlPoint.SetFx("Y", "Height*0.75"); controlPoint.Visible = true; controlPoint.XBehavior = ENCoordinateBehavior.OffsetFromMin; controlPoint.YBehavior = ENCoordinateBehavior.OffsetFromMid; controlPoint.Tooltip = "Modify arrowhead 1"; shape.Controls.AddChild(controlPoint); controlPoint = new NControl(); controlPoint.SetFx("X", "Width-40"); controlPoint.SetFx("Y", "Height*1"); controlPoint.Visible = true; controlPoint.XBehavior = ENCoordinateBehavior.OffsetFromMax; controlPoint.YBehavior = ENCoordinateBehavior.OffsetFromMid; controlPoint.Tooltip = "Modify arrowhead 2"; shape.Controls.AddChild(controlPoint); controlPoint = new NControl(); controlPoint.SetFx("X", "Width-20"); controlPoint.SetFx("Y", "Height*1"); controlPoint.Visible = true; controlPoint.XBehavior = ENCoordinateBehavior.OffsetFromMax; controlPoint.YBehavior = ENCoordinateBehavior.OffsetFromMid; controlPoint.Tooltip = "Modify arrowhead 3"; shape.Controls.AddChild(controlPoint); // add a geometry NGeometry geometry = new NGeometry(); NMoveTo plotFigure = geometry.MoveTo("Width*0", "Height*0.5"); geometry.LineTo("Controls.0.X", "ABS(Controls.0.Y)"); geometry.LineTo("Controls.1.X", "ABS(Controls.1.Y)"); geometry.LineTo("Controls.2.X", "ABS(Controls.2.Y)"); geometry.LineTo("Width", "Height*0.5"); geometry.LineTo("Controls.2.X", "Height-Geometry.3.Y"); geometry.LineTo("Controls.1.X", "Height-Geometry.2.Y"); geometry.LineTo("Controls.0.X", "Height-Geometry.1.Y"); geometry.LineTo("Geometry.0.X", "Geometry.0.Y"); plotFigure.CloseFigure = true; shape.Geometry = geometry; return(shape); }