『公告』 预祝您龙年大吉,万事如意, 过节期间, 大家如需数据服务,请拨打400 或直接添加客服微信,再祝大家龙年,心想事成。
关注我们 新浪 腾讯

ArcGIS Engine 10 开发手册(7-11)ArcGIS Engine中饼图的调用

ArcGIS Engine 10 开发手册(7-11)ArcGIS Engine中饼图的调用
本文介绍使用ArcGIS Engine生成饼图的方法。

    本文介绍使用ArcGIS Engine生成饼图的方法。


   ArcGIS Engine生成饼图示例代码

    代码如下:

 

public PieRender (AxMapControl pMapcontrol, IFeatureLayer pFtLayer, string pFieldName1, string pFieldName2)

 

{

 

  IGeoFeatureLayer pGeoFeaLayer = (IGeoFeatureLayer) pFtLayer;

 

  IChartRenderer pChartRenderer = new ChartRendererClass ();

 

  // Set up the field to draw charts

 

  IRendererFields pRenderFields = (IRendererFields) pChartRenderer;

  pRenderFields.AddField (pFieldName1, pFieldName1);

  pRenderFields.AddField (pFieldName2, pFieldName2);

 

  IPieChartRenderer pPieChartRender = (IPieChartRenderer) pChartRenderer;

 

  //计算最大值部分有待补充////////////////////////////////////

 

  //Calculate the max value of the data field to scale the chart

 

  //ICursor pCursor = new CursorClass();

  IQueryFilter pQueryFilter = new QueryFilterClass ();

 

  //IRowBuffer pRow = new RowBufferClass();

  ITable pTable = (ITable) pGeoFeaLayer;

  pQueryFilter.AddField (pFieldName1);

 

  ICursor pCursor = pTable.Search (pQueryFilter, true);

  IDataStatistics pDataStat = new DataStatisticsClass ();

 

  IFeatureCursor pFtCursor = pFtLayer.FeatureClass.Search (null, false);

  pDataStat.Cursor = pFtCursor as ICursor;

 

  pDataStat.Field = pFieldName1;

 

  double pMax = pDataStat.Statistics.Maximum;

 

  IPieChartSymbol pPiechartSymbol = new PieChartSymbolClass ();

  IFillSymbol pFillSymbol = new SimpleFillSymbolClass ();

  IChartSymbol pChartSymbol = (IChartSymbol) pPiechartSymbol;

  pPiechartSymbol.Clockwise = true;

  pPiechartSymbol.UseOutline = true;

 

  ILineSymbol pOutLine = new SimpleLineSymbolClass ();

  pOutLine.Color = GetRGBColor (255, 0, 255);

  pOutLine.Width = 1;

 

  pPiechartSymbol.Outline = pOutLine;

 

  IMarkerSymbol pMarkerSymbol = (IMarkerSymbol) pPiechartSymbol;

 

  //finally

  pChartSymbol.MaxValue = pMax;

  pMarkerSymbol.Size = 16;

 

  //像符号数组中添加 添加符号

 

  ISymbolArray pSymbolArray = (ISymbolArray) pPiechartSymbol;

  pFillSymbol.Color = GetRGBColor (213, 212, 252);

  pFillSymbol.Outline = pOutLine;

  pSymbolArray.AddSymbol ((ISymbol) pFillSymbol);

 

  //////////////////////////

 

  pFillSymbol.Color = GetRGBColor (183, 242, 122);

  pFillSymbol.Outline = pOutLine;

  pSymbolArray.AddSymbol ((ISymbol) pFillSymbol);

 

  //set up the background

 

  pFillSymbol.Color = GetRGBColor (239, 228, 190);

  pChartRenderer.BaseSymbol = (ISymbol) pFillSymbol;

  pChartRenderer.UseOverposter = false;

  pPieChartRender.MinSize = 1;

 

  pPieChartRender.MinValue = pDataStat.Statistics.Minimum;

  pPieChartRender.FlanneryCompensation = false;

  pPieChartRender.ProportionalBySum = true;

  pChartRenderer.ChartSymbol = (IChartSymbol) pPiechartSymbol;

  pChartRenderer.CreateLegend ();

 

  pGeoFeaLayer.Renderer = (IFeatureRenderer) pChartRenderer;

  pMapcontrol.ActiveView.Refresh ();

 

}

 

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;

 

}

     效果如图

 

 

      京ICP备08100627号-22 京公网安备 11010802030428号