/// <summary> /// MaplexEngine标注 /// </summary> /// <param name="pGeoFeatLyr">标注图层</param> /// <param name="pMap">地球人都知</param> /// <param name="annoField">标记字段</param> public void Annotation(IGeoFeatureLayer pGeoFeatLyr, IMap pMap, string annoField) { IAnnotateMap pAnnoMap; pAnnoMap = new MaplexAnnotateMapClass(); pMap.AnnotationEngine = pAnnoMap; IGeoFeatureLayer pGeoFeatLayer; pGeoFeatLayer = pGeoFeatLyr; IAnnotateLayerPropertiesCollection pAnnoProps; pAnnoProps = pGeoFeatLyr.AnnotationProperties; pAnnoProps.Clear(); ILabelEngineLayerProperties2 pLabelEngine2 = new MaplexLabelEngineLayerPropertiesClass(); pLabelEngine2.Expression = "[" + annoField + "]"; IMaplexOverposterLayerProperties pMaplexPro = new MaplexOverposterLayerPropertiesClass(); pMaplexPro.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolygon; pMaplexPro.PolygonPlacementMethod = esriMaplexPolygonPlacementMethod.esriMaplexHorizontalInPolygon; pMaplexPro.CanPlaceLabelOutsidePolygon = false; pMaplexPro.CanRemoveOverlappingLabel = false; pMaplexPro.RepeatLabel = false; pLabelEngine2.OverposterLayerProperties = pMaplexPro as IOverposterLayerProperties; IMapOverposter pMapPos = axMapControl1.Map as IMapOverposter; IOverposterProperties pOP = pMapPos.OverposterProperties; IMaplexOverposterProperties pMaplexOP = pOP as IMaplexOverposterProperties; pMaplexOP.LabelLargestPolygon = false; pAnnoProps.Add(pLabelEngine2 as IAnnotateLayerProperties); pGeoFeatLyr.DisplayAnnotation = true; }
来自:https://www.cnblogs.com/cannel/archive/2011/03/24/1993383.html
IAnnotateMap pAnnoMap = new MaplexAnnotateMapClass();
m_hookHelper.FocusMap.AnnotationEngine = pAnnoMap;
使用Maplex