Bezier links problem


Sometimes when i adjust the shape of a bezier link i can't see the adjust points anymore because they are hidden somewere outside of the view. see picture for the problem. i can easily reproduce the problem it happens all the time when i play with bezier links. in the picture you can see that the bezier link is selected but no adjust points appear so i can't adhust the link's shape anymore.
what can i do?
The other half of Northwoods sells a tool into the CRM space for sales campaign automation. It looks a lot like the StateCharter demo, and it has bezier links. and, like you say... if you grab a resize handle and drag it out of the window, you lose the ability to reshape the bezier. In the 3+ years we've been selling the tool, no one has ever complained about this.
One thing is that people may learn pretty quickly that they can just "Relink" the link to reset this.
But your graphs are different than StateCharter, so maybe it is more likely to happen here.
Some suggestions:
1. StateCharter has a "curviness" control that lets you set that parameter on a selected bezier link. That's one possible (not particularly elegant) solution.
2. You could customize the link to add a new resize handle on the middle of the link that controls the curviness parameter. (there's a recent discussion about finding points on a Bezier in this forum.)


I override the methods for adding resize handle and controlling it and now it looks like this:
public override void DoResize(GoView view, RectangleF origRect, PointF newPoint, int whichHandle, GoInputState evttype, SizeF min, SizeF max) { if ((whichHandle == SharpnessID) && (this.ResizesRealtime || evttype == GoInputState.Finish || evttype == GoInputState.Cancel)) { float gap = newPoint.X - origRect.Right; this.Curviness += gap; } else { base.DoResize(view, origRect, newPoint, whichHandle, evttype, min, max); } this.AdjustingStyle = GoLinkAdjustingStyle.Scale; } public override void AddSelectionHandles(GoSelection sel, GoObject selectedObj) { base.AddSelectionHandles(sel, selectedObj); PointF handlePoint = this.GetSpotLocation(GoObject.MiddleRight); IGoHandle handle = sel.CreateResizeHandle(this, selectedObj, handlePoint, SharpnessID, true); GoHandle goh = handle.GoObject as GoHandle; if (goh != null) { goh.Style = GoHandleStyle.Diamond; goh.BrushColor = Color.Yellow; RectangleF bounds = goh.Bounds; bounds.Inflate(1, 1); goh.Bounds = bounds; } }
my problem is with the DoResize method. when i do this: this.Curviness += gap;
nothing happens. the link doesn't change it shape.
any suggestions?

From StateCharter:

if (link != null) {
link.AdjustingStyle = GoLinkAdjustingStyle.Calculate;
link.Curviness = Decimal.ToSingle(curvinessUpDown.Value);
goView1.FinishTransaction("changed curviness");