ThinkGeo.com    |     Documentation    |     Premium Support

Recommended way to draw a curved line between two points

Hi,


I'm curious if there's a simple way to draw a curved line, instead of a straight line, between two points, via the GdiPlusGeoCanvas API.


With my map, I'm zoomed in really really close...


Thanks,


Greg


 



Yes, you can do that using an inherited LineStyle and overriding the DrawCore function. If you wan to give us a little more context on what you want to do, I think that we can write a little sample to show you and eveybody else how this can be accomplished. Thank you.

Hi Val,


Basically, we have a number of PointShapes that are connected via straight LineShapes, to indicate the existence of a communication network.  We allow our users to "skip" one of the PointShapes, which causes the removal of two LineShapes and the addition of a new, longer LineShape that needs to be rendered in such a way as to show the "Skipped" PointShape.  Our designers have chosen a parabolic, or curved, line to indicate the change in connection.... sort of like a "line hop" in the drawing.  It doesn't need to be a line hop per say, though... it just needs to be a curved line.


Thanks,


Greg



Hi Greg, 



For your requirement, I wrote a new style for you; for this style, you need to defined a column value to indicate which point needs to be skipped. Please see my attached code. You can remove the *.txt extension and replace the same sample in our integrated how do I samples. It's a simple implementation, you can continuously work on this style to support more effect.



Thanks and feel free to let me know if you have more queries.



Thanks,

Howard



001_DisplayASimpleMap.xaml.cs.txt (10.2 KB)

Hi Howard, 
  
 Thanks for the example.  Unfortunately, we think this solution will not work for us because the GDI rendered line is not hit-testable.   
  
 I’m thinking we need to generate a list of vertices that create a curved line, and then load those into a LineShape, for this to be hit-testable. 
  
 Can you please confirm? 
  
 Thanks, 
 Greg 


Greg,


  I tested Howard's solution and I got the result as you see in the screenshot below with all the point being used for the curved line. The solution provided by Howard seems to me appropriate. Can you explain in a little more detail what you expect exactely from the solution to be "hit-testable" and we will provide the solution for you? Thank you.




After rereading your last post, I think what you mean is to have a CurvedLineStyle inheriting from LineStyle instead of CurvedLinePointStyle inheriting from PointStyle as it is currently in the solution. Please, confirm with us so that we can work on that solution for you. Thank you.