不多说了,直接上代码,代码中有注释。代码源于项目,任何转载请注明: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(); }
执行效果: