Changing Graph layout based on Node Selected.
-
Thursday, August 09, 2012 4:13 AM
Hi,
Lets say i have a few 100 nodes with over twice the number of edges connecting nodes. For example purpose lets consider below.
graph.AddEdge("A", "loves", "B");
graph.AddEdge("B", "is wife", "C");
graph.AddEdge("C", "is love", "A");
graph.AddEdge("B", "hates", "D");
graph.AddEdge("D", "loves", "B");
graph.AddEdge("A", "likes", "D");
graph.AddEdge("C", "mom", "B");
graph.AddEdge("B", "dad", "G");
graph.AddEdge("A", "friends", "Jignesh");I observe that gViewer is smart to detect "A" as root node and displays graph accorndingly. What i want to achieve is if user select a node, for example "B" then node "B" should be in center and it should display surrounding nodes of "B", and rest other nodes should be less in size/visiability. Similarly of "C" node is selected then "C" should be in center and it should display surrounding nodes of "C", and rest other nodes should be less in size/visiability.
Can anyone guide me on how to achieve this.
Regards
- Edited by Jignesh Desai Thursday, August 09, 2012 4:14 AM
All Replies
-
Saturday, August 18, 2012 10:35 PMOwner
Sorry, MSAGL does not have a ready to apply method for solving this. Thanks
Lev Nachmanson
- Marked As Answer by Lev NachmansonOwner Saturday, August 18, 2012 10:35 PM
- Unmarked As Answer by Jignesh Desai Monday, August 20, 2012 3:59 AM
-
Monday, August 20, 2012 4:03 AM
Lev,
Well i was hopping that i would get some tip or guidance or reference on my question and not just a 'sorry' reply.
I understand that its not build in, but can anyone give some startup information/tip , so that i can do it myself, either by modifying source or some logic using existing API?
Regards
-
Tuesday, August 21, 2012 3:07 PMOwner
Hi Jignesh,
It is achievable with MSAGL. Some things to consider:
You will not be able to use IViewer.Graph = yourGraph; way to get the layout, but you will need to create your own layout method.
For your task you will need setting Node.BoundaryCurve for the node that change sizes.
You will need to use IVewer.Invalidate() method for redraw.
It is not be very simple, but it is doable.
Thanks,
Lev Nachmanson
- Marked As Answer by Lev NachmansonOwner Tuesday, August 21, 2012 3:07 PM

