Page Index Toggle Pages: 1 [2]  Send TopicPrint
Hot Topic (More than 10 Replies) Manipulating Cascading arrows (Read 11055 times)
Stoyo
God Member
*****
Offline


MindFusion support

Posts: 13230
Joined: Jul 20th, 2005
Re: Manipulating Cascading arrows
Reply #15 - Apr 7th, 2006 at 11:27am
Print Post  
Isn't that last point something like the auto-routing feature? We can extend it to show the arrow route while an arrow is being created or modified. We have recently implemented a better anchor point support in the routing algorithm for a customer, so that could help too (the routing algorithm ignored anchor points in previous versions). And you can make the last segments start away from the nodes by setting larger values to the fc.RoutingOptions.NodeVicinitySize/Cost properties.

Stoyan
  
Back to top
 
IP Logged
 
p.hannah
YaBB Newbies
*
Offline


I love YaBB 1G - SP1!

Posts: 38
Joined: Feb 1st, 2006
Re: Manipulating Cascading arrows
Reply #16 - Apr 9th, 2006 at 11:45pm
Print Post  
Stoyo,

I'm just working my way through all of this and was looking for AllowSplitArrows and can't find it...  I've done a search in the documentation and the flowchart properties.

Paul.

Stoyo wrote on Apr 3rd, 2006 at 12:32pm:
The AllowSplitArrows feature also lets you merge control points. We can add a threshold property that lets you define the distance between control points at which they are merged.

  
Back to top
 
IP Logged
 
Stoyo
God Member
*****
Offline


MindFusion support

Posts: 13230
Joined: Jul 20th, 2005
Re: Manipulating Cascading arrows
Reply #17 - Apr 10th, 2006 at 4:58am
Print Post  
Sorry, that property is called ArrowsSplittable.
  
Back to top
 
IP Logged
 
Stoyo
God Member
*****
Offline


MindFusion support

Posts: 13230
Joined: Jul 20th, 2005
Re: Manipulating Cascading arrows
Reply #18 - Apr 12th, 2006 at 8:10am
Print Post  
Hi Paul,

We have some progress with that, try this version:

https://mindfusion.org/_temp/FlowChart.NET.zip

- dragging the middle point in two-segment cascading arrow will insert new segments
- there is a MergeThreshold property available now (0 by default); increase its value to let users merge segments without exactly matching the merge-point coordinates. This property depends on MeasureUnit.
- regarding the "last segment going away from the node" feature - try doing that with auto-routing. Now there is a RerouteArrows.WhileCreating flag that can be applied to RoutingOptions.TriggerRouting to show the arrow route while an arrow is drawn. There is a similar WhileModifying flag, but it's not implemented yet.
In addition, if you use anchor points, set RoutingOptions.Anchoring to Reassign.

That last feature make arrows a little jumpy because a small change in the mouse position could lead to a big difference in the route, we'll see whether we can improve this.

Stoyan
  
Back to top
 
IP Logged
 
Stoyo
God Member
*****
Offline


MindFusion support

Posts: 13230
Joined: Jul 20th, 2005
Re: Manipulating Cascading arrows
Reply #19 - Apr 14th, 2006 at 12:31pm
Print Post  
As for changing left-down arrows to down-left ones, try this version:

https://mindfusion.org/_temp/flowchartnet.zip

It lets you change the orientation of the cascading segments by doing a kind of mouse gesture while dragging the second control point of an arrow or the point next to the last one. Imagine the two adjacent segments form a rectangle - users must drag the point to its opposite corner in that rectangle to change the cascade orientation.

Stoyan
  
Back to top
 
IP Logged
 
p.hannah
YaBB Newbies
*
Offline


I love YaBB 1G - SP1!

Posts: 38
Joined: Feb 1st, 2006
Re: Manipulating Cascading arrows
Reply #20 - Apr 17th, 2006 at 11:20pm
Print Post  
Stoyo,

Is it possible to get a source-based copy of this latest?

Thanks,
Paul.
  
Back to top
 
IP Logged
 
Stoyo
God Member
*****
Offline


MindFusion support

Posts: 13230
Joined: Jul 20th, 2005
Re: Manipulating Cascading arrows
Reply #21 - Apr 18th, 2006 at 6:01am
Print Post  
Paul,

I have emailed it to the address you have registered with us.

Stoyan
  
Back to top
 
IP Logged
 
p.hannah
YaBB Newbies
*
Offline


I love YaBB 1G - SP1!

Posts: 38
Joined: Feb 1st, 2006
Re: Manipulating Cascading arrows
Reply #22 - Apr 19th, 2006 at 12:02am
Print Post  
I've recompiled using the new code and made the changes you recommend in your posts.

It looks better (especially the threshold on the merging of points) but I still have a couple of issues, illustrated by the following screenshots:

[img]http://static.flickr.com/47/131095222_1d265fdb73_o_d.jpg[/img]
[img]http://static.flickr.com/45/131095221_f110948eb2_o_d.jpg[/img]
  
Back to top
 
IP Logged
 
Stoyo
God Member
*****
Offline


MindFusion support

Posts: 13230
Joined: Jul 20th, 2005
Re: Manipulating Cascading arrows
Reply #23 - Apr 19th, 2006 at 5:51am
Print Post  
Is routing enabled for these last arrows ? Could you email me that diagram saved through SaveToFile - btw. XML serialization won't work correctly with that last version because of some renamed properties.
  
Back to top
 
IP Logged
 
p.hannah
YaBB Newbies
*
Offline


I love YaBB 1G - SP1!

Posts: 38
Joined: Feb 1st, 2006
Re: Manipulating Cascading arrows
Reply #24 - Apr 20th, 2006 at 10:31pm
Print Post  
In reply to:

> Hello Paul,
>
> Could you try setting the AutoRoute property of all arrows to true - then
> they should change their orientation when modified so the last segments
> point away from the nodes.
>
> Sincerely,
> Stoyan

After creating each arrow I set AutoRoute to true.  I then get an exception in PointCollection.this[int index].get:

return (PointF)List[index];

(watch details and callback at end...)

This is called from Arrow.getCrossings():

...
for (int test = 0; test < arrow.SegmentCount; ++test)
{
PointF testPt1 = arrow.Points[test];
PointF testPt2 = arrow.Points[test+1];
...

----------------

Watch details:

-

List
{MindFusion.FlowChartX.PointCollection}
System.Collections.IList {MindFusion.FlowChartX.PointCollection}
-

[MindFusion.FlowChartX.PointCollection]
{MindFusion.FlowChartX.PointCollection}
MindFusion.FlowChartX.PointCollection
-

base
{MindFusion.FlowChartX.PointCollection}
System.Collections.CollectionBase {MindFusion.FlowChartX.PointCollection}


Capacity
4
int


Count
3
int
-

InnerList
Count = 3
System.Collections.ArrayList
+

[0]
{X = 71.02884 Y = 367.486328}
object {System.Drawing.PointF}
+

[1]
{X = 95.875 Y = 367.486328}
object {System.Drawing.PointF}
+

[2]
{X = 95.875 Y = 381.115143}
object {System.Drawing.PointF}
+

Raw View

-

List
{MindFusion.FlowChartX.PointCollection}
System.Collections.IList {MindFusion.FlowChartX.PointCollection}
+

[MindFusion.FlowChartX.PointCollection]
{MindFusion.FlowChartX.PointCollection}
MindFusion.FlowChartX.PointCollection


IsFixedSize
false
bool


IsReadOnly
false
bool
-

Non-Public members

+

[MindFusion.FlowChartX.PointCollection]
{MindFusion.FlowChartX.PointCollection}
MindFusion.FlowChartX.PointCollection
+

list
Count = 3
System.Collections.ArrayList


System.Collections.ICollection.IsSynchronized
false
bool


System.Collections.ICollection.SyncRoot
{object}
object


System.Collections.IList.IsFixedSize
false
bool


System.Collections.IList.IsReadOnly
false
bool


IsFixedSize
false
bool


IsReadOnly
false
bool


index
3
int

----------------

Callback details:

FlowChart.NET.dll!MindFusion.FlowChartX.PointCollection.this[int].get(int index = 3) Line 703
C#

FlowChart.NET.dll!MindFusion.FlowChartX.Arrow.getCrossings() Line 5055 + 0x23 bytes
C#

FlowChart.NET.dll!MindFusion.FlowChartX.Arrow.drawArrowSegments(System.Drawing.G
raphics g = {System.Drawing.Graphics}, System.Drawing.Pen p = {Color = {Color [Black]}}, System.Drawing.Brush b = {Color = {Color [A=255, R=0, G=0, B=0]}}, System.Drawing.Pen pHeads = {Color = {Color [Black]}}, bool shadow = false, bool custom = true) Line 1332 + 0x8 bytes
C#

FlowChart.NET.dll!MindFusion.FlowChartX.Arrow.Draw(System.Drawing.Graphics g = {System.Drawing.Graphics}, bool shadow = false) Line 1802 + 0x18 bytes
C#

FlowChart.NET.dll!MindFusion.FlowChartX.FlowChart.drawObject(System.Drawing.Grap
hics g = {System.Drawing.Graphics}, MindFusion.FlowChartX.ChartObject obj = {MindFusion.FlowChartX.Arrow}, bool conn = false) Line 2107 + 0xb bytes
C#

FlowChart.NET.dll!MindFusion.FlowChartX.FlowChart.drawItems(System.Drawing.Graph
ics g = {System.Drawing.Graphics}, System.Drawing.RectangleF clipRect = {X = 61.96051 Y = 350.002319 Width = 47.4470749 Height = 35.7797546}, bool modfBackBuf = false) Line 2178 + 0x10 bytes
C#

FlowChart.NET.dll!MindFusion.FlowChartX.FlowChart.drawFlowChart(System.Drawing.B
itmap bm = {System.Drawing.Bitmap}, System.Drawing.Rectangle clip = {X = 204 Y = 108 Width = 122 Height = 92}, bool modfBackBuf = false, bool transforms = true) Line 1925 + 0x29 bytes
C#
  
Back to top
 
IP Logged
 
Page Index Toggle Pages: 1 [2] 
Send TopicPrint