ThinkGeo.com    |     Documentation    |     Premium Support

Embossing a HighLight Layer

Hi,



Could you please provide a style for showing a Highlight layer like its Embossed or 3D something like that.I tried several combinations it didn’t worked.



Right now i am using below style.


objhighlightClickLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateHatchStyle(GeoHatchStyle.DottedDiamond, GeoColor.StandardColors.DarkGray, GeoColor.FromArgb(80, GeoColor.SimpleColors.Green), GeoColor.StandardColors.WhiteSmoke);
             
objhighlightClickLayer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.InternationalBorder1;
 
objhighlightClickLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

Thanks.

Hi Lalitya,



Here we have four ways for solve it.



Here is the simplest solution:



We implement it follow this idea:

Duplicate render same polygon with different style, and set different offset each time.

Advantage is you don’t need implement your custom area style or modify source polygons, it’s very simple.

Disadvantage is this solution will reduce performance, some parts of the shadow contains sawtooth, and you cannot set transparent in the top area.

Here is how it looks like now:





Here is the code:


AreaStyle style5 = AreaStyles.CreateSimpleAreaStyle(GeoColor.StandardColors.Gray,
                GeoColor.StandardColors.Gray, 5, 5);
            style5.DrawingLevel = DrawingLevel.LevelOne;
 
            objhighlightClickLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(style5);
 
            AreaStyle style10 = AreaStyles.CreateSimpleAreaStyle(GeoColor.StandardColors.DarkGray,
                GeoColor.StandardColors.DarkGray, 10, 10);
 
            style10.DrawingLevel = DrawingLevel.LevelOne;
            objhighlightClickLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(style10);
 
            objhighlightClickLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(
                AreaStyles.CreateHatchStyle(
                GeoHatchStyle.DottedDiamond,
                GeoColor.StandardColors.DarkGray,
                GeoColor.FromArgb(80, GeoColor.SimpleColors.Green),
                GeoColor.StandardColors.WhiteSmoke));
 
            objhighlightClickLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

As below are other ideas about other solutions, they are complex.



1. Calculate shadow part for each area, save them as single polygon shape, put it to special layer and render it.

2. Write your custom area style, draw shadow based on your areaes in “DrawCore” function.



Wish they are helpful.



Regards,



Don