//添加图层标注
public void AddAnnotate(ILayer layer, string fieldName)
{
IFeatureLayer pFeatureLayer = layer as IFeatureLayer;
IGeoFeatureLayer pGeoLayer = pFeatureLayer as IGeoFeatureLayer;
IAnnotateLayerPropertiesCollection IPALPColl = pGeoLayer.AnnotationProperties;
IPALPColl.Clear();
IRgbColor pColor = GetColor(85, 105, 255);
IFontDisp pFont = new StdFont()
{
Name = "宋体",
//Bold = true
} as IFontDisp;
ITextSymbol pTextSymbol = new TextSymbolClass()
{
Color = pColor,
Font = pFont,
Size = 8
};
IBasicOverposterLayerProperties pBasicOverLayerPro = new BasicOverposterLayerPropertiesClass();
pBasicOverLayerPro.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint;
pBasicOverLayerPro.GenerateUnplacedLabels = true;
pBasicOverLayerPro.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerPart;
//创建标注对象
ILabelEngineLayerProperties pLableEngine = new LabelEngineLayerPropertiesClass()
{
Symbol = pTextSymbol,
IsExpressionSimple = true
};
string express = "[" + fieldName + "]";
pLableEngine.Expression = express;
IOverposterLayerProperties2 pOverLayerProper = pBasicOverLayerPro as IOverposterLayerProperties2;
pOverLayerProper.TagUnplaced = true;//设置该属性,目的是不被其他element遮挡
pLableEngine.BasicOverposterLayerProperties = pBasicOverLayerPro;
IAnnotateLayerProperties pAnnoPros = pLableEngine as IAnnotateLayerProperties;
pAnnoPros.AnnotationMinimumScale = 500000;
IPALPColl.Add(pAnnoPros);
pGeoLayer.DisplayAnnotation = true;
pGeoLayer.DisplayField = fieldName;
MapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewBackground, null, null);
}