ArcEngine 图层标注 (根据字段、角度)

ArcEngine 图层标注 (根据字段、角度)

分类: .net Arc
Engine
 1786人阅读 评论(0) 收藏 举报

用AE来控制图层是否显示标注,以及已哪一个字段作为标注的字段,以哪一个字段作为标注的角度,现将代码写下来,以备以后差用。

[csharp] view
plain
copy
  1. public void EnableFeatureLayerLabel(IFeatureLayer pFeaturelayer, string sLableField, IRgbColor pRGB, int size, string angleField)  
  2. {  
  3.     //判断图层是否为空  
  4.     if (pFeaturelayer == null)  
  5.         return;  
  6.     IGeoFeatureLayer pGeoFeaturelayer = (IGeoFeatureLayer)pFeaturelayer;  
  7.     IAnnotateLayerPropertiesCollection pAnnoLayerPropsCollection;  
  8.     pAnnoLayerPropsCollection = pGeoFeaturelayer.AnnotationProperties;  
  9.     pAnnoLayerPropsCollection.Clear();  
  10.   
  11.     //stdole.IFontDisp  pFont; //字体  
  12.     ITextSymbol pTextSymbol;  
  13.   
  14.     //pFont.Name = “新宋体”;  
  15.     //pFont.Size = 9;  
  16.     //未指定字体颜色则默认为黑色  
  17.     if (pRGB == null)  
  18.     {  
  19.         pRGB = new RgbColorClass();  
  20.         pRGB.Red = 0;  
  21.         pRGB.Green = 0;  
  22.         pRGB.Blue = 0;  
  23.     }  
  24.   
  25.     pTextSymbol = new TextSymbolClass();  
  26.     pTextSymbol.Color = (IColor)pRGB;  
  27.     pTextSymbol.Size = size; //标注大小  
  28.   
  29.     IBasicOverposterLayerProperties4 pBasicOverposterlayerProps4 = new BasicOverposterLayerPropertiesClass();  
  30.     switch (pFeaturelayer.FeatureClass.ShapeType)//判断图层类型  
  31.     {  
  32.         case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon:  
  33.             pBasicOverposterlayerProps4.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolygon;  
  34.             break;  
  35.         case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint:  
  36.             pBasicOverposterlayerProps4.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint;  
  37.             break;  
  38.         case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline:  
  39.             pBasicOverposterlayerProps4.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline;  
  40.             break;  
  41.     }   
  42.     pBasicOverposterlayerProps4.PointPlacementMethod = esriOverposterPointPlacementMethod.esriRotationField;  
  43.     pBasicOverposterlayerProps4.RotationField = angleField;  
  44.   
  45.     ILabelEngineLayerProperties pLabelEnginelayerProps = new LabelEngineLayerPropertiesClass();   
  46.     pLabelEnginelayerProps.Expression = “[“ + sLableField + “]”;  
  47.     pLabelEnginelayerProps.Symbol = pTextSymbol;  
  48.     pLabelEnginelayerProps.BasicOverposterLayerProperties = pBasicOverposterlayerProps4 as IBasicOverposterLayerProperties;  
  49.     pAnnoLayerPropsCollection.Add((IAnnotateLayerProperties)pLabelEnginelayerProps);  
  50.     pGeoFeaturelayer.DisplayAnnotation = true;//很重要,必须设置   
  51.     //axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewBackground, null, null); }  
  52. }  

转载自:https://blog.csdn.net/hsg77/article/details/44003275

You may also like...

退出移动版