ArcGIS Engine 渲染----饼图

 

ArcGIS Engine 渲染----饼图

上一篇 / 下一篇  2007-07-21 21:24:31 / 个人分类:ArcGIS Engine

这几天一直看AE,几天看下来没什么头绪,日子过得恍恍忽忽.今天终于写了一个程序练练手,根据帮助的VB程序改编的,在众多的接口之间跳来跳去,晕头转向.现把代码贴出来,给处在迷茫中的朋友一点小启示,也以此自勉!

画饼图,C#实现:

    private RgbColor GetRgbColor(int red, int green, int blue)
k7G9hF3g6nZ0z*v0        {3sNews.Net——中国地理空间信息门户网站i,H!uA!kc%Z
            RgbColor rgbColor = new RgbColorClass();3sNews.Net——中国地理空间信息门户网站w_%T;Q0N;@
            rgbColor.Red = red;3sNews.Net——中国地理空间信息门户网站 v*NO+Fi|7D
            rgbColor.Green = green;3sNews.Net——中国地理空间信息门户网站+[6`EBt
            rgbColor.Blue = blue;

            return rgbColor;3sNews.Net——中国地理空间信息门户网站Nn \&Cs4E,?pa,X
        }

        private void btnPieChart_Click(object sender, EventArgs e)
}_ Q{5iZ,L0        {
7Gp;CN%D,er0            IMap pMap = new MapClass();3sNews.Net——中国地理空间信息门户网站 Dt;E3M1G
            IFeatureLayer pFLayer = (IFeatureLayer)axMapControl1.get_Layer(0);
T6Z#p-^#g0            IGeoFeatureLayer pGeoFeaLayer = (IGeoFeatureLayer)pFLayer;

            IChartRenderer pChartRenderer = new ChartRendererClass();

            // Set up the field to draw charts

            IRendererFields pRenderFields = (IRendererFields)pChartRenderer;3sNews.Net——中国地理空间信息门户网站jf&k%v-u0O(` E
            pRenderFields.AddField("Pop_cntry", null);3sNews.Net——中国地理空间信息门户网站ppTMz%X]7QcR
            IPieChartRenderer pPieChartRender = (IPieChartRenderer)pChartRenderer;

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


-H];]V+T#tU w0            //ICursor pCursor = new CursorClass();

            IQueryFilter pQueryFilter = new QueryFilterClass();
;@|_ g/hhB/|'C }0            //IRowBuffer pRow = new RowBufferClass();3sNews.Net——中国地理空间信息门户网站7Y ]h }oH
            ITable pTable = (ITable)pGeoFeaLayer;3sNews.Net——中国地理空间信息门户网站Wnt%s.s,G|%[L @6E@
            pQueryFilter.AddField("Pop_cntry");3sNews.Net——中国地理空间信息门户网站,a#b_ e/h
            ICursor pCursor = pTable.Search(pQueryFilter, true);

            int  fieldIndex;3sNews.Net——中国地理空间信息门户网站Ee g*yf?g&O5g \!H
            double MaxValue;
5`p9`J:H_f0            bool firstValue;
9tY]\?0            double fieldValue;

            fieldIndex = pTable.FindField("Pop_cntry");
2l8v `N*V R'}aKs0            firstValue = true;3sNews.Net——中国地理空间信息门户网站 v;TL"J:C.PiS"t
            MaxValue = 0;

3sNews.Net——中国地理空间信息门户网站pvgd5pV_Cq"H
            IRowBuffer pRow = pCursor.NextRow();3sNews.Net——中国地理空间信息门户网站b(hF!W6Q#W
            while (pRow != null)
^Q3B4T i V`;Cd0            {3sNews.Net——中国地理空间信息门户网站Y-j9[']G|8T,`[
                fieldValue =(double) pRow.get_Value(fieldIndex);
];BD#v@#[?)X0                if (firstValue)3sNews.Net——中国地理空间信息门户网站#jWY-M |2tA-L
                {3sNews.Net——中国地理空间信息门户网站Ex4d%Qk
                    MaxValue = fieldValue;
'Vdh/g4a:B&c0                    firstValue = false;
(SJ },da sg0                }

                if (fieldValue > MaxValue)3sNews.Net——中国地理空间信息门户网站#fq7B#sh8zl }7s
                {
*^&ex#s*QS0                    MaxValue = fieldValue;
X q7`e+DHg0                }3sNews.Net——中国地理空间信息门户网站(T8QcJjJI.F
                pRow = pCursor.NextRow();
;N0_.t!w8_ee4^0            }

            IPieChartSymbol pPiechartSymbol = new Pie          ChartSymbolClass();
g/U W7[ eQ-@0            IFillSymbol pFillSymbol = new SimpleFillSymbolClass();

            IChartSymbol pChartSymbol = (IChartSymbol)pPiechartSymbol;
E E8O2O/I"A$O,i^m)U0            pPiechartSymbol.Clockwise = true;
![k bT?0            pPiechartSymbol.UseOutline = true;

            ILineSymbol pOutLine = new SimpleLineSymbolClass();3sNews.Net——中国地理空间信息门户网站 q0G.k{EU.r
            pOutLine.Color = GetRgbColor(255,0,255);3sNews.Net——中国地理空间信息门户网站3I(F ?&vQ;G9v8t9M
            pOutLine.Width = 1;
HX x}-[ g-P0            pPiechartSymbol.Outline = pOutLine;

            IMarkerSymbol pMarkerSymbol = (IMarkerSymbol)pPiechartSymbol;

            //finally

            pChartSymbol.MaxValue = MaxValue;

            pMarkerSymbol.Size = 16;

            ISymbolArray pSymbolArray = (ISymbolArray)pPiechartSymbol;
UnfzD%]0            pFillSymbol.Color = GetRgbColor(213,212,252);

            pFillSymbol.Outline = pOutLine;
G/E3t*R"\ ]6V:b1s0            pSymbolArray.AddSymbol((ISymbol)pFillSymbol);

            //set up the background

            pFillSymbol.Color = GetRgbColor(239,228,190);
O@z(Yr9RT.Kc:Z0            pChartRenderer.BaseSymbol = (ISymbol)pFillSymbol;

            pChartRenderer.UseOverposter = false;

            pPieChartRender.MinSize = 6;

            pPieChartRender.MinValue = 453588;
s `,@ _%Z}S8|0            pPieChartRender.FlanneryCompensation = false;
zf z3hi k0            pPieChartRender.ProportionalBySum = true;

            pChartRenderer.ChartSymbol = (IChartSymbol)pPiechartSymbol;
T%` R4X+iyA)r*t4y0            pChartRenderer.CreateLegend();
c|U?B:zFfG0            pGeoFeaLayer.Renderer =(IFeatureRenderer) pChartRenderer;

            this.axLicenseControl1.Refresh();         

         }

PS:可能代码有点复杂,望大家多多指正,呵呵!

来自:http://www.3snews.net/html/47/6447-9536.html

posted @ 2009-03-12 16:09  闫磊博客  阅读(521)  评论(0)    收藏  举报