private void LayerAnnotation(IGeoFeatureLayer pGeoFeatLyr, string annoField) { IGeoFeatureLayer pGeoFeatLayer; pGeoFeatLayer = pGeoFeatLyr; IAnnotateLayerPropertiesCollection pAnnoProps; pAnnoProps = pGeoFeatLyr.AnnotationProperties; pAnnoProps.Clear(); IAnnotateLayerProperties pAnnoLayerProps; ILabelEngineLayerProperties pLabelEngine; ILineLabelPosition pPosition; ILineLabelPlacementPriorities pPlacement; IBasicOverposterLayerProperties pBasic; //'定义标注的字体 ITextSymbol pTextSyl; pTextSyl = new TextSymbol(); stdole.IFontDisp pFont; pFont = new stdole.StdFont() as stdole.IFontDisp; pFont.Name = "仿宋"; pFont.Size = 12; pFont.Bold = true; pTextSyl.Font = pFont; IRgbColor pcolor = new RgbColorClass(); pcolor.Red = 255; pcolor.Green = 10; pcolor.Blue = 20; pTextSyl.Color = pcolor; pPosition = new LineLabelPosition(); pPosition.Parallel = false; pPosition.Perpendicular = true; pPlacement = new LineLabelPlacementPriorities(); pBasic = new BasicOverposterLayerProperties(); pBasic.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline; pBasic.LineLabelPlacementPriorities = pPlacement; pBasic.LineLabelPosition = pPosition; pLabelEngine = new LabelEngineLayerProperties() as ILabelEngineLayerProperties; pLabelEngine.Symbol = pTextSyl; pLabelEngine.BasicOverposterLayerProperties = pBasic; //field的形式必须是[fieldname] pLabelEngine.Expression = annoField; pAnnoLayerProps = (IAnnotateLayerProperties)pLabelEngine; pAnnoProps.Add(pAnnoLayerProps); pGeoFeatLyr.DisplayAnnotation = true; axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null); }
//文本标注 private void btnTextElement_Click(object sender, EventArgs e) { if (axMapControl1.LayerCount > 0) { IGeoFeatureLayer pGeoFeatureLayer; ILineLabelPosition pLineLabelPosition; ILabelEngineLayerProperties pLabelEngineLayerProperties; IAnnotateLayerProperties pAnnotateLayerProperties; pGeoFeatureLayer = (IGeoFeatureLayer)axMapControl1.get_Layer(0); pGeoFeatureLayer.AnnotationProperties.Clear(); pLineLabelPosition = new LineLabelPosition(); pLineLabelPosition.Above = false; pLineLabelPosition.AtEnd = false; pLineLabelPosition.Below = false; pLineLabelPosition.Horizontal = false; pLineLabelPosition.InLine = true; pLineLabelPosition.OnTop = true; pLineLabelPosition.Parallel = true; pLineLabelPosition.ProduceCurvedLabels = true; ITextSymbol pTextSymbol = new TextSymbol(); IColor pColor = new RgbColor(); pColor.RGB = 100; pTextSymbol.Size = 12; pTextSymbol.Font.Name = "宋体"; pTextSymbol.Color = pColor; pLabelEngineLayerProperties = new LabelEngineLayerProperties() as ILabelEngineLayerProperties; pLabelEngineLayerProperties.Symbol = pTextSymbol; pLabelEngineLayerProperties.IsExpressionSimple = true; pLabelEngineLayerProperties.Expression = "[DESCRIP]";//需要中括号,这里显示NAME字段属性 pLabelEngineLayerProperties.BasicOverposterLayerProperties.LineLabelPosition = pLineLabelPosition; pAnnotateLayerProperties = (IAnnotateLayerProperties)pLabelEngineLayerProperties; pAnnotateLayerProperties.DisplayAnnotation = true; pAnnotateLayerProperties.FeatureLayer = pGeoFeatureLayer; pAnnotateLayerProperties.LabelWhichFeatures = esriLabelWhichFeatures.esriAllFeatures; pAnnotateLayerProperties.WhereClause = ""; pGeoFeatureLayer.AnnotationProperties.Add(pAnnotateLayerProperties); pGeoFeatureLayer.DisplayAnnotation = true; axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null); axMapControl1.ActiveView.Refresh(); } }