ArcObjects实现柱图符号化

      不多说了,直接上代码,代码中有注释。代码源于项目,任何转载请注明:hi-ajg.iteye.com

      柱图符号化C#代码

      private void doBarChartRenderer()
        {
            IFeatureLayer flayer=(IFeatureLayer)axMapControl1.get_Layer(0);
            IGeoFeatureLayer pGeoFeatureLayer = flayer as IGeoFeatureLayer;
            IFeatureClass pFeatureClass = flayer.FeatureClass;
            //定义ChartRenderer对象,并QI
            IChartRenderer pChartRenderer = new ChartRendererClass();
            IRendererFields pRendererFields= (IRendererFields)pChartRenderer;
            //添加字段---WHITE和BLACK
            pRendererFields.AddField("WHITE", "WHITE");
            pRendererFields.AddField("BLACK", "BLACK");
            //统计WHITE字段的最大值
            ITable pTable= pGeoFeatureLayer as ITable;
            IDataStatistics pDataStat = new DataStatisticsClass();
            IFeatureCursor pFtCursor = flayer.FeatureClass.Search(null, false);
            pDataStat.Cursor = pFtCursor as ICursor;
            pDataStat.Field = "WHITE";
            double pMax = pDataStat.Statistics.Maximum;
            // 定义ChartSymbol
            IBarChartSymbol pBarChartSymbol = new BarChartSymbolClass();
            pBarChartSymbol.Width = 6;
            IChartSymbol pChartSymbol = pBarChartSymbol as IChartSymbol;
            // ChartSymbol与MarkerSymbol QI
            IMarkerSymbol pMarkerSymbol = (IMarkerSymbol)pBarChartSymbol;
            //设置pChartSymbol的最大值,bars的最大高度
            pChartSymbol.MaxValue = pMax;
            pMarkerSymbol.Size = 50;
            //定义符号数组
            ISymbolArray pSymbolArray = (ISymbolArray)pBarChartSymbol;
            //添加第一个符号,显示WHITE字段
            IFillSymbol pFillSymbol = new SimpleFillSymbolClass();
            pFillSymbol.Color = getRgbColor(255, 0, 0) as IColor;
            pSymbolArray.AddSymbol(pFillSymbol as ISymbol);
            //添加第二个符号,显示BLACK字段
            pFillSymbol = new SimpleFillSymbolClass();
            pFillSymbol.Color = getRgbColor(0, 0, 255) as IColor;
            pSymbolArray.AddSymbol(pFillSymbol as ISymbol);
            //设置ChartSymbol
            pChartRenderer.ChartSymbol = pChartSymbol as IChartSymbol;
            pChartRenderer.Label = "White/Black";
            //设置底图
            pFillSymbol = new SimpleFillSymbolClass();
            pFillSymbol.Color = getRgbColor(255, 255, 0);
            pChartRenderer.BaseSymbol = (ISymbol)pFillSymbol;
            pChartRenderer.CreateLegend();
            //渲染,刷新地图和TOC
            pGeoFeatureLayer.Renderer = (IFeatureRenderer)pChartRenderer;
            axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
            axTOCControl1.Update();
        }

 

      执行效果:

 

猜你喜欢

转载自hi-ajg.iteye.com/blog/1299868