private void BiaoZhu(int LayIndex, string Field)//图层标注 { IFeatureCursor pFeatCursor; IFeatureClass pfeatClass; IFeatureLayer pfeatlayer; IFeature pfeature; IEnvelope pEnv; IRgbColor pColor; stdole.Font pFont; IPoint pt; ITextSymbol pTextSymbol; IElement pEle; ITextElement pTextEle; IActiveView pActiveView; pfeatlayer = (IFeatureLayer)axMapControl1.get_Layer(LayIndex ); pfeatClass = pfeatlayer.FeatureClass; pFeatCursor = pfeatClass.Search(null, false);//获取要素类的游标对象 pfeature = pFeatCursor.NextFeature();//获取第一个标注对象 int fieldIdx; //int i; //得到name字段的Index fieldIdx = pfeature.Fields.FindField(Field ); //设置颜色 pColor = new RgbColorClass(); if (Field == "NAME" && LayIndex == 1) { pColor.Red = 255; } else { pColor.Green = 255; } //创建字体 pFont = new stdole.StdFontClass(); pFont.Name = "楷体"; //创建标注样式 pTextSymbol = new TextSymbolClass(); pTextSymbol.Color = pColor; pTextSymbol.Font = pFont as stdole.IFontDisp; pTextSymbol.Size = 25; pGraphicsContainer = axMapControl1.Map as IGraphicsContainer; pActiveView = axMapControl1.Map as IActiveView; //循环遍历标注每一个要素 while (pfeature != null) { pEnv = pfeature.Extent; pt = new PointClass(); //使用地理对象的包络线中心作为标注位置 pt.PutCoords(pEnv.XMin + pEnv.Width * 0.5, pEnv.YMin + pEnv.Height * 0.5); //创建标注文本 pTextEle = new TextElementClass(); pTextEle.Symbol = pTextSymbol; pTextEle.Text = pfeature.get_Value(fieldIdx).ToString(); //设置标注位置 pEle = pTextEle as IElement; pEle.Geometry = pt; //绘制标注 pGraphicsContainer.AddElement(pEle, 0); pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, pEnv); pt = null; pTextEle = null; pfeature = pFeatCursor.NextFeature(); } }
时间: 2024-10-12 20:49:02