level 5
glasseswu
楼主
根据单字段渲染的代码(可扩展为多字段):
view plaincopy to clipboardprint?
01.//柱形图渲染,参数为字段名称
02. private void ChartBarMap(string strField)
03. {
04. IGeoFeatureLayer pGeoFeatureL;
05. IFeatureLayer pFeatureLayer;
06. ITable pTable;
07. ICursor pCursor;
08. IQueryFilter pQueryFilter;
09. IRowBuffer pRowBuffer;
10. IMap pMap;
11. IActiveView pActiveView;
12. int numFields = 1;//可以设置为多个字段
13. int[] fieldIndexies = new int[numFields];
14. double dmaxValue;
15. bool firstValue;
16. double dfieldValue;
17. IChartRenderer pChartRenderer;
18. IRendererFields pRendererFields;
19. IFillSymbol pFillSymbol;
20. IMarkerSymbol pMarkerSymbol;
21. ISymbolArray pSymbolArray;
22. IChartSymbol pChartSymbol;
23. string strPopField1 = strField;
24. pMap = this.pMapControl.Map;
25. pActiveView = this.pMapControl.ActiveView;
26. pMap.ReferenceScale = pMap.MapScale;//保证label和chart随地图缩放而缩放
27. pFeatureLayer = (IGeoFeatureLayer)pMap.get_Layer(0);
28. pGeoFeatureL = (IGeoFeatureLayer)pFeatureLayer;
29. pTable = (ITable)pGeoFeatureL;
30. pGeoFeatureL.ScaleSymbols = true;
31. pChartRenderer = new ChartRendererClass();
32. pRendererFields = (IRendererFields)pChartRenderer;
33. pRendererFields.AddField(strPopField1, strPopField1);//可以设置多个字段
34. pQueryFilter = new QueryFilterClass();
35. pQueryFilter.AddField(strPopField1);//可以设置多个字段
36. pCursor = pTable.Search(pQueryFilter, true);
37. fieldIndexies[0] = pTable.FindField(strPopField1);
38. firstValue = true;
39. dmaxValue = 0;
40. pRowBuffer = pCursor.NextRow();
41. while (pRowBuffer != null)
42. {
43. dfieldValue = (double)pRowBuffer.get_Value(fieldIndexies[0]);
44. if (firstValue)
45. {
46. dmaxValue = dfieldValue;
47. firstValue = false;
48. }
49. else
50. {
51. if (dfieldValue > dmaxValue)
52. {
53. dmaxValue = dfieldValue;
54. }
55. }
56. pRowBuffer = pCursor.NextRow();
57. }
58. if (dmaxValue <= 0)
59. {
60. //MessageBox.Show("各地区该指标值均为0,无需渲染!");
61. }
62. IBarChartSymbol pBarChartSymbol;
63. pBarChartSymbol = new BarChartSymbolClass();
64. pChartSymbol = (IChartSymbol)pBarChartSymbol;
65. pBarChartSymbol.Width = 12;
66. pMarkerSymbol = (IMarkerSymbol)pBarChartSymbol;
67. pChartSymbol.MaxValue = dmaxValue;
68. pMarkerSymbol.Size = 80;
69. pSymbolArray = (ISymbolArray)pBarChartSymbol;
70. pFillSymbol = new SimpleFillSymbolClass();
71. pFillSymbol.Color = getRGB(213, 212, 252);
72. pSymbolArray.AddSymbol((ISymbol)pFillSymbol);
73. pChartRenderer.ChartSymbol = (IChartSymbol)pBarChartSymbol;
74. pChartRenderer.Label = strField;
75. pFillSymbol = new SimpleFillSymbolClass();
76. pFillSymbol.Color = getRGB(239, 228, 190);
77. pChartRenderer.BaseSymbol = (ISymbol)pFillSymbol;
78. pChartRenderer.UseOverposter = false;
79. pChartRenderer.CreateLegend();//
80. pGeoFeatureL.Renderer = (IFeatureRenderer)pChartRenderer;
81. pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
82. }
2011年08月13日 17点08分
1
view plaincopy to clipboardprint?
01.//柱形图渲染,参数为字段名称
02. private void ChartBarMap(string strField)
03. {
04. IGeoFeatureLayer pGeoFeatureL;
05. IFeatureLayer pFeatureLayer;
06. ITable pTable;
07. ICursor pCursor;
08. IQueryFilter pQueryFilter;
09. IRowBuffer pRowBuffer;
10. IMap pMap;
11. IActiveView pActiveView;
12. int numFields = 1;//可以设置为多个字段
13. int[] fieldIndexies = new int[numFields];
14. double dmaxValue;
15. bool firstValue;
16. double dfieldValue;
17. IChartRenderer pChartRenderer;
18. IRendererFields pRendererFields;
19. IFillSymbol pFillSymbol;
20. IMarkerSymbol pMarkerSymbol;
21. ISymbolArray pSymbolArray;
22. IChartSymbol pChartSymbol;
23. string strPopField1 = strField;
24. pMap = this.pMapControl.Map;
25. pActiveView = this.pMapControl.ActiveView;
26. pMap.ReferenceScale = pMap.MapScale;//保证label和chart随地图缩放而缩放
27. pFeatureLayer = (IGeoFeatureLayer)pMap.get_Layer(0);
28. pGeoFeatureL = (IGeoFeatureLayer)pFeatureLayer;
29. pTable = (ITable)pGeoFeatureL;
30. pGeoFeatureL.ScaleSymbols = true;
31. pChartRenderer = new ChartRendererClass();
32. pRendererFields = (IRendererFields)pChartRenderer;
33. pRendererFields.AddField(strPopField1, strPopField1);//可以设置多个字段
34. pQueryFilter = new QueryFilterClass();
35. pQueryFilter.AddField(strPopField1);//可以设置多个字段
36. pCursor = pTable.Search(pQueryFilter, true);
37. fieldIndexies[0] = pTable.FindField(strPopField1);
38. firstValue = true;
39. dmaxValue = 0;
40. pRowBuffer = pCursor.NextRow();
41. while (pRowBuffer != null)
42. {
43. dfieldValue = (double)pRowBuffer.get_Value(fieldIndexies[0]);
44. if (firstValue)
45. {
46. dmaxValue = dfieldValue;
47. firstValue = false;
48. }
49. else
50. {
51. if (dfieldValue > dmaxValue)
52. {
53. dmaxValue = dfieldValue;
54. }
55. }
56. pRowBuffer = pCursor.NextRow();
57. }
58. if (dmaxValue <= 0)
59. {
60. //MessageBox.Show("各地区该指标值均为0,无需渲染!");
61. }
62. IBarChartSymbol pBarChartSymbol;
63. pBarChartSymbol = new BarChartSymbolClass();
64. pChartSymbol = (IChartSymbol)pBarChartSymbol;
65. pBarChartSymbol.Width = 12;
66. pMarkerSymbol = (IMarkerSymbol)pBarChartSymbol;
67. pChartSymbol.MaxValue = dmaxValue;
68. pMarkerSymbol.Size = 80;
69. pSymbolArray = (ISymbolArray)pBarChartSymbol;
70. pFillSymbol = new SimpleFillSymbolClass();
71. pFillSymbol.Color = getRGB(213, 212, 252);
72. pSymbolArray.AddSymbol((ISymbol)pFillSymbol);
73. pChartRenderer.ChartSymbol = (IChartSymbol)pBarChartSymbol;
74. pChartRenderer.Label = strField;
75. pFillSymbol = new SimpleFillSymbolClass();
76. pFillSymbol.Color = getRGB(239, 228, 190);
77. pChartRenderer.BaseSymbol = (ISymbol)pFillSymbol;
78. pChartRenderer.UseOverposter = false;
79. pChartRenderer.CreateLegend();//
80. pGeoFeatureL.Renderer = (IFeatureRenderer)pChartRenderer;
81. pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
82. }