ThinkGeo.com    |     Documentation    |     Premium Support

Set image in ValueStyle

hi, 

i use "ValueStyle" to grouping polygons, this feature group by color

how can i load image instead AreaStyle ( load image in polygons instead color with areastyle )



thanks

Hi Alireza, 
  
 I think this sample should be helpful for draw an image in area style: 
  
 wiki.thinkgeo.com/wiki/_media/file/ServicesEditionSample_ImageStyle_CS_120209.zip 
  
 Regards, 
  
 Don

thank’s you

do you have asp.net c# sample?




and another question



how can i use this to AreaStyle??



my c# code is:



                Collection<geocolor> colorsInFamily = GeoColor.GetColorsInHueFamily(GeoColor.StandardColors.BlueViolet, 5);

                ValueStyle valueStyle = new ValueStyle();

                valueStyle.ColumnName = "ID";



                valueStyle.ValueItems.Add(new ValueItem("1", AreaStyles.WaterIntermittent1));

                valueStyle.ValueItems.Add(new ValueItem("29", new AreaStyle(new GeoSolidBrush(colorsInFamily[1]))));



               //// how can i use imagestyle for this id?? => //// valueStyle.ValueItems.Add(new ValueItem("2",</geocolor>


Hi Alireza,



I think you should override the DrawCore method of AreaStyle. The code just like following:


public class ImageAreaStyle : AreaStyle
    {
        private GeoImage geoImage = null;
 
        public ImageAreaStyle(GeoImage geoImage)
        {
            this.geoImage = geoImage;
        }  
 
        protected override void DrawCore(IEnumerable<Feature> features, GeoCanvas canvas, Collection<SimpleCandidate> labelsInThisLayer, Collection<SimpleCandidate> labelsInAllLayers)
        {
            // Loop through all of the features being passed in to draw.  
            foreach (Feature feature in features)
            {
                WellKnownType shapeWellKnownType = feature.GetWellKnownType();
                if (shapeWellKnownType == WellKnownType.Polygon)
                {
                    PolygonShape polygonShape = new PolygonShape(feature.GetWellKnownBinary());
                    canvas.DrawArea(polygonShape, new GeoTextureBrush(geoImage), DrawingLevel.LevelOne);
 
                }
                else if (shapeWellKnownType == WellKnownType.Multipolygon)
                {
                    MultipolygonShape multiPolygonShape = new MultipolygonShape(feature.GetWellKnownBinary());
                    canvas.DrawArea(multiPolygonShape, new GeoTextureBrush(geoImage), DrawingLevel.LevelOne);
                }
            }
        }
    }

And use the following code to apply it to the ValueItem:


valueStyle.ValueItems.Add(new ValueItem("2", new ImageAreaStyle(new GeoImage(imagePath))));

Thanks,

Peter




Mucho Mucho Mucho Gracias



how can i set Alpha for this pictures?

Thanks

Hi Alireza, 



Please try changing the Opacity property of GeoImage the default value is 1.0f. 



NOTE: This property is declared  only in the Development version.



Thanks, 

Peter