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(); }
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); }