ThinkGeo.com    |     Documentation    |     Premium Support

How to change the polygon color

Hi,


I have several question regarding to draw polygon.


1. In my application, I allow user to draw a polygon on the map control. The polygon by default is a solid(filled) blue color.


   Is there any way to change the polygon to transparent instead of solid color ( filled)? Is there any way to change the polygon color  to yellow?


2. User mouse double click to end drawing polygon. However, at this point, the map automatic zoomed out after mouse double clicked to end drawing polygon. How to stop automatic zoom out?


3. After polygon is drawed, I allow user to edit the polygon. How to escape from edit mode?


Thanks,


Kathy


 



Kathy,


Thanks for your post and questions.
 
1)Following code snippet shows how to change the color of the Tracking shapes.


winformsMap1.TrackOverlay.TrackShapeLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle.FillSolidBrush.Color = GeoColor.SimpleColors.Yellow;

 
2)I do not think the map will zoom in when we double click to end the tracking of the polygon shape, maybe I am misunderstanding something. Any all, you can have a try on the following statement to forbid the zoom in.


winformsMap1.ExtentOverlay.DoubleLeftClickMode = MapDoubleLeftClickMode.Disabled;

 
3)I am not quite understand about this question, could you give more information about it?
 
Any more questions just feel free to let me know.
 
Thanks.
 
Yale

Hi Yale,


Thank you very much for your help.


I still have problem with polygon shape editing.


In my application, I have a toggle button to allow user edit the polygon shape that user drawed. The following code is used to enter polygon shape edit mode. When user clicks on the button, the polygon vertices got marked as edit mode( rotation, moving, add vertices, and etc...). When user clicks on the toggle button again, I want to exit the "edit mode" ( remove the edit mode marks).


 How to do this? Thank you.


 




case "btnTrackEdit":
                        winformsMap1.TrackOverlay.TrackMode = TrackMode.None;
                        foreach (Feature feature in winformsMap1.TrackOverlay.TrackShapeLayer.InternalFeatures)
                        {
                            winformsMap1.EditOverlay.EditShapesLayer.InternalFeatures.Add(feature);
                        }
                        winformsMap1.EditOverlay.CalculateAllControlPoints();
                        winformsMap1.TrackOverlay.TrackShapeLayer.InternalFeatures.Clear();

                        winformsMap1.Refresh(new Overlay[] { winformsMap1.EditOverlay, winformsMap1.TrackOverlay });
                        break;


Katherine,


Thanks for your post and feedback.
 
Try following code, hope it is exactly what we are going to achieve.

 

winformsMap1.TrackOverlay.TrackMode = TrackMode.None;
foreach (Feature feature in winformsMap1.EditOverlay.EditShapesLayer.InternalFeatures)
{                
    winformsMap1.TrackOverlay.TrackShapeLayer.InternalFeatures.Add(feature);
}
winformsMap1.EditOverlay.CalculateAllControlPoints();
winformsMap1.EditOverlay.EditShapesLayer.InternalFeatures.Clear();
 
winformsMap1.Refresh(new Overlay[] { winformsMap1.EditOverlay, winformsMap1.TrackOverlay });


Any more questions just feel free to let me know.
 
Thanks.
 
Yale