Exemple #1
0
        private void btnScale_Click(object sender, EventArgs e)
        {
            IFeatureLayer fLayer1 = m_map.get_Layer(1) as IFeatureLayer;
            IFeatureLayer fLayer2 = m_map.get_Layer(2) as IFeatureLayer;
            IFeatureLayer fLayer0 = m_map.get_Layer(0) as IFeatureLayer;

            fLayer2.MinimumScale = 500000000;

            IFeatureLayer newFalyer = new FeatureLayer();

            newFalyer.Name = "USA";
            IFeatureClass featureClass = fLayer1.FeatureClass;

            newFalyer.FeatureClass = featureClass;
            IGeoFeatureLayer geoFLayer0   = fLayer0 as IGeoFeatureLayer;
            IGeoFeatureLayer geoFLayer1   = fLayer1 as IGeoFeatureLayer;
            IGeoFeatureLayer geoFLayer2   = fLayer2 as IGeoFeatureLayer;
            IGeoFeatureLayer newGeoFLayer = newFalyer as IGeoFeatureLayer;

            IScaleDependentRenderer scaleDependentRenderer = new ScaleDependentRenderer();
            IFeatureRenderer        renderer0 = geoFLayer0.Renderer;
            IFeatureRenderer        renderer1 = geoFLayer1.Renderer;
            IFeatureRenderer        renderer2 = geoFLayer2.Renderer;

            //Build the new scale dependerer from the existing renderer
            scaleDependentRenderer.AddRenderer(renderer0);
            scaleDependentRenderer.AddRenderer(renderer1);
            scaleDependentRenderer.AddRenderer(renderer2);

            //
            scaleDependentRenderer.set_Break(0, 100000000);
            scaleDependentRenderer.set_Break(1, 500000000);
            scaleDependentRenderer.set_Break(2, 5000000000);

            newGeoFLayer.Renderer = scaleDependentRenderer as IFeatureRenderer;
            m_map.AddLayer(newGeoFLayer);
            axMapControl1.Refresh();
        }
Exemple #2
0
        private List <TocGroup> LoadTocGroups(Renderer renderer, SwatchMaker swatchMaker, bool includeImages)
        {
            List <TocGroup> tocGroups = new List <TocGroup>();

            switch (renderer.GetType().Name)
            {
            case "SimpleRenderer":
                tocGroups.Add(new TocGroup());
                SimpleRenderer sr = (SimpleRenderer)renderer;
                tocGroups[0].Add(LoadTocClass(sr.Symbol, swatchMaker, includeImages));
                break;

            case "ValueMapRenderer":
                tocGroups.Add(new TocGroup());
                ValueMapRenderer vmr = (ValueMapRenderer)renderer;

                foreach (Classification classification in vmr.Classifications)
                {
                    string label = "";

                    switch (classification.GetType().Name)
                    {
                    case "Exact":
                        Exact exact = (Exact)classification;
                        label = !String.IsNullOrEmpty(exact.Label) ? exact.Label : exact.Value;
                        break;

                    case "Range":
                        Range range = (Range)classification;
                        label = !String.IsNullOrEmpty(range.Label) ? range.Label : range.Lower + " to " + range.Upper;
                        break;

                    case "Other":
                        label = "(other)";
                        break;
                    }

                    tocGroups[0].Add(LoadTocClass(classification.Symbol, swatchMaker, label, includeImages));
                }
                break;

            case "ScaleDependentRenderer":
                ScaleDependentRenderer scd = (ScaleDependentRenderer)renderer;
                tocGroups = LoadTocGroups(scd.Renderer, swatchMaker, includeImages);

                foreach (TocGroup tocGroup in tocGroups)
                {
                    if (!String.IsNullOrEmpty(scd.Lower))
                    {
                        tocGroup.MinScale = Convert.ToDouble(scd.Lower);
                    }
                    if (!String.IsNullOrEmpty(scd.Upper))
                    {
                        tocGroup.MaxScale = Convert.ToDouble(scd.Upper);
                    }
                }
                break;

            case "GroupRenderer":
                foreach (Renderer subRenderer in (GroupRenderer)renderer)
                {
                    List <TocGroup> subGroups = LoadTocGroups(subRenderer, swatchMaker, includeImages);

                    foreach (TocGroup tocGroup in subGroups)
                    {
                        tocGroups.Add(tocGroup);
                    }
                }
                break;
            }

            return(tocGroups);
        }