地图符号化-柱状图

来源:互联网 发布:域名top 编辑:程序博客网 时间:2024/06/05 09:24
class BarRender    {        public BarRender(AxMapControl pMapcontrol, IFeatureLayer pFtLayer, String pFieldName1, string pFieldName2)        {             IGeoFeatureLayer pGeoFeatureLayer = pFtLayer as IGeoFeatureLayer;            pGeoFeatureLayer.ScaleSymbols = true;            IFeatureClass pFeatureClass = pFtLayer.FeatureClass;            //定义柱状图渲染组建对象            IChartRenderer pChartRenderer = new ChartRendererClass();            //定义渲染字段对象并给字段对象实例化为pChartRenderer            IRendererFields pRendererFields;            pRendererFields = (IRendererFields)pChartRenderer;            //向渲染字段对象中添加字段--- 待补充自定义添加            pRendererFields.AddField(pFieldName1, pFieldName1);            pRendererFields.AddField(pFieldName2, pFieldName2);            ITable pTable= pGeoFeatureLayer as ITable;            int[] pFieldIndecies = new int[2];            pFieldIndecies[0] = pTable.FindField(pFieldName1);            pFieldIndecies[1] = pTable.FindField(pFieldName2);             IDataStatistics pDataStat = new DataStatisticsClass();            IFeatureCursor pFtCursor = pFtLayer.FeatureClass.Search(null, false);            pDataStat.Cursor = pFtCursor as ICursor;            pDataStat.Field = pFieldName2;            double pMax = pDataStat.Statistics.Maximum;            // 定义并设置渲染时用的chart marker symbol            IBarChartSymbol pBarChartSymbol = new BarChartSymbolClass();            pBarChartSymbol.Width = 6;            IChartSymbol pChartSymbol;            pChartSymbol = pBarChartSymbol as IChartSymbol;            IMarkerSymbol pMarkerSymbol;            pMarkerSymbol = (IMarkerSymbol)pBarChartSymbol;             IFillSymbol pFillSymbol;            //设置pChartSymbol的最大值            pChartSymbol.MaxValue = pMax;            // 设置bars的最大高度             pMarkerSymbol.Size = 80;            //下面给每一个bar设置符号            //定义符号数组            ISymbolArray pSymbolArray = (ISymbolArray)pBarChartSymbol;             //添加第一个符号            pFillSymbol = new SimpleFillSymbolClass();            pFillSymbol.Color = GetRGBColor(193, 252, 179) as IColor;            pSymbolArray.AddSymbol(pFillSymbol as ISymbol);            //添加第二个符号            pFillSymbol = new SimpleFillSymbolClass();            pFillSymbol.Color = GetRGBColor(145, 55, 251) as IColor;            pSymbolArray.AddSymbol(pFillSymbol as ISymbol);             pChartRenderer.ChartSymbol = pChartSymbol as IChartSymbol;            //pChartRenderer.Label = "AREA";          如果没有这四句,就看不到地图  pFillSymbol = new SimpleFillSymbolClass();            pFillSymbol.Color = GetRGBColor(239, 228, 190);            pChartRenderer.BaseSymbol = (ISymbol)pFillSymbol;            pChartRenderer.CreateLegend();            pChartRenderer.UseOverposter = false;            //将柱状图渲染对象与渲染图层挂钩            pGeoFeatureLayer.Renderer = (IFeatureRenderer)pChartRenderer;            //刷新地图和TOOCotrol            IActiveView pActiveView = pMapcontrol.ActiveView as IActiveView;            pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);                    }        public IRgbColor GetRGBColor(int r, int g, int b)        {            IRgbColor pRGB;            pRGB = new RgbColorClass();            pRGB.Red = r;            pRGB.Green = g;            pRGB.Blue = b;            return pRGB;        }    }
 
点要素柱状图产生方式去掉basesymbol就可以了
 

原创粉丝点击