public void labeling(IGeoFeatureLayer _iGeoFLayer, string _labelFuc, double _maxScale, double _minScale, bool _showMapTips, bool _displayAnnotation, IActiveView _aView) { RgbColor _labelColor = new RgbColor(); _labelColor.RGB = Microsoft.VisualBasic.Information.RGB(0, 0, 0); IAnnotateLayerPropertiesCollection propertiesColl = _iGeoFLayer.AnnotationProperties; IAnnotateLayerProperties labelEngineProperties = new LabelEngineLayerProperties() as IAnnotateLayerProperties; IElementCollection placedElements = new ElementCollection(); IElementCollection unplacedElements = new ElementCollection(); propertiesColl.QueryItem(0, out labelEngineProperties, out placedElements, out unplacedElements); ILabelEngineLayerProperties lpLabelEngine = labelEngineProperties as ILabelEngineLayerProperties; lpLabelEngine.Expression = _labelFuc; lpLabelEngine.Symbol.Color = _labelColor; labelEngineProperties.AnnotationMaximumScale = _maxScale; // closer labelEngineProperties.AnnotationMinimumScale = _minScale; // further IFeatureLayer thisFeatureLayer = _iGeoFLayer as IFeatureLayer; IDisplayString displayString = thisFeatureLayer as IDisplayString; IDisplayExpressionProperties properties = displayString.ExpressionProperties; properties.Expression = _labelFuc; //example: "[OWNER_NAME] & vbnewline & \"$\" & [TAX_VALUE]"; _iGeoFLayer.DisplayAnnotation = _displayAnnotation; // refresh map window _aView.Refresh(); }
private void LabelHighWay(ILayer pLayer) { IGeoFeatureLayer pGeoFeatureLayer = pLayer as IGeoFeatureLayer; if (pGeoFeatureLayer != null) { IAnnotateLayerPropertiesCollection panAnnotateLayerPropertiesCollection = pGeoFeatureLayer.AnnotationProperties; panAnnotateLayerPropertiesCollection.Clear(); IRgbColor pColor = new RgbColor(); pColor.Red = 0; pColor.Blue = 0; pColor.Green = 0; IFormattedTextSymbol pTextSymbol = new TextSymbol(); //ITextSymbol pTextSymbol = new TextSymbol(); pTextSymbol.Background = CreateBalloonCallout() as ITextBackground; pTextSymbol.Color = pColor; pTextSymbol.Size = 10; pTextSymbol.Direction = esriTextDirection.esriTDHorizontal; Font font = new System.Drawing.Font("宋体", 10); pTextSymbol.Font = ESRI.ArcGIS.ADF.COMSupport.OLE.GetIFontDispFromFont(font) as stdole.IFontDisp; IBasicOverposterLayerProperties properties = new BasicOverposterLayerProperties(); IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; switch (pFeatureLayer.FeatureClass.ShapeType) { case esriGeometryType.esriGeometryPolygon: properties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolygon; break; case esriGeometryType.esriGeometryPoint: properties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint; break; case esriGeometryType.esriGeometryPolyline: properties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline; break; } ILabelEngineLayerProperties2 properties2 = new LabelEngineLayerProperties() as ILabelEngineLayerProperties2; if (properties2 != null) { properties2.Expression = "[LXDM]"; properties2.Symbol = pTextSymbol; properties2.BasicOverposterLayerProperties = properties; IAnnotateLayerProperties p = properties2 as IAnnotateLayerProperties; // p.AnnotationMaximumScale = maxScale; // p.AnnotationMinimumScale = minScale; panAnnotateLayerPropertiesCollection.Add(p); } } if (pGeoFeatureLayer != null) { pGeoFeatureLayer.DisplayAnnotation = true; } _mxDocument.ActivatedView.Refresh(); }
/// <summary> /// 标注图层 /// </summary> /// <param name="pLayer">需要标注的图层</param> /// <param name="fontSize">字体大小</param> /// <param name="labelField">标注字段</param> /// <param name="minScale">显示标注的最小比例尺</param> /// <param name="maxScale">显示标注的最大比例尺</param> /// 注意:一问最后两个参数是比例尺的分母,所有minScale的值应该比maxSacle的值大 private void LabelLayer(ILayer pLayer, int fontSize, string labelField, double minScale, double maxScale) { IGeoFeatureLayer pGeoFeatureLayer = pLayer as IGeoFeatureLayer; if (pGeoFeatureLayer != null) { IAnnotateLayerPropertiesCollection panAnnotateLayerPropertiesCollection = pGeoFeatureLayer.AnnotationProperties; panAnnotateLayerPropertiesCollection.Clear(); IRgbColor pColor = new RgbColor(); pColor.Red = 0; pColor.Blue = 0; pColor.Green = 0; ITextSymbol pTextSymbol = new TextSymbol(); pTextSymbol.Color = pColor; pTextSymbol.Size = fontSize; Font font = new System.Drawing.Font("宋体", fontSize); pTextSymbol.Font = ESRI.ArcGIS.ADF.COMSupport.OLE.GetIFontDispFromFont(font) as stdole.IFontDisp; IBasicOverposterLayerProperties properties = new BasicOverposterLayerProperties(); IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; switch (pFeatureLayer.FeatureClass.ShapeType) { case esriGeometryType.esriGeometryPolygon: properties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolygon; break; case esriGeometryType.esriGeometryPoint: properties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint; break; case esriGeometryType.esriGeometryPolyline: properties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline; break; } ILabelEngineLayerProperties2 properties2 = new LabelEngineLayerProperties() as ILabelEngineLayerProperties2; if (properties2 != null) { properties2.Expression = "[" + labelField + "]"; properties2.Symbol = pTextSymbol; properties2.BasicOverposterLayerProperties = properties; IAnnotateLayerProperties p = properties2 as IAnnotateLayerProperties; p.AnnotationMaximumScale = maxScale; p.AnnotationMinimumScale = minScale; panAnnotateLayerPropertiesCollection.Add(p); } } if (pGeoFeatureLayer != null) { pGeoFeatureLayer.DisplayAnnotation = true; } _mxDocument.ActiveView.Refresh(); }
private void btnLabel_Click(object sender, RoutedEventArgs e) { //The FeatureLayer for labelling IFeatureLayer labelLayer = this.m_map.Map.get_Layer(0) as IFeatureLayer; IGeoFeatureLayer gLabelLayer = labelLayer as IGeoFeatureLayer; IAnnotateLayerPropertiesCollection annoPropCol = gLabelLayer.AnnotationProperties; annoPropCol.Clear(); //ITextSymbol uasage ITextSymbol pTextSyl = new TextSymbol(); //Font fnt = new System.Drawing.Font("宋体", 10f, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); //using stdole IFontDisp font = new StdFont() as IFontDisp; font.Size = 20; font.Italic = true; // pTextSyl.Size = 20; pTextSyl.Font = font; //IRgbColor fromColor = new RgbColor(255,0, 0); //ESRI.ArcGIS.Display.RgbColorClass() RgbColor color = new RgbColor(); color.Red = 255; color.Green = 0; color.Blue = 0; pTextSyl.Color = color; //Position IBasicOverposterLayerProperties pBasic = new BasicOverposterLayerProperties(); // if (labelLayer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPoint) // { IPointPlacementPriorities pPlacementPoint = new PointPlacementPriorities(); pBasic.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint; pBasic.PointPlacementPriorities = pPlacementPoint; pBasic.PointPlacementOnTop = false; pBasic.PointPlacementMethod = esriOverposterPointPlacementMethod.esriOnTopPoint;// esriAroundPoint; // } //Point a field as a label ILabelEngineLayerProperties labelField = new LabelEngineLayerProperties() as ILabelEngineLayerProperties; labelField.Expression = "[name]"; //set postion labelField.BasicOverposterLayerProperties = pBasic; //set symbol labelField.Symbol = pTextSyl; IAnnotateLayerProperties annoProp = labelField as IAnnotateLayerProperties; annoPropCol.Add(annoProp); gLabelLayer.DisplayAnnotation = true; m_map.Refresh(); }
private void ShowLabel() { if (labelOn) { if (!this.cbxActiveMap.HasItems || !this.cbxFeatureLayer.HasItems || !this.cbxField.HasItems) { return; } if (annoPropCol != null) { annoPropCol.Clear(); } labelLayer = this.m_map.Map.get_Layer(this.cbxFeatureLayer.SelectedIndex) as IFeatureLayer; gLabelLayer = labelLayer as IGeoFeatureLayer; annoPropCol = gLabelLayer.AnnotationProperties; ITextSymbol pTextSyl = new TextSymbol(); IFontDisp font = new StdFont() as IFontDisp; font.Size = 20; font.Italic = true; pTextSyl.Font = font; RgbColor color = new RgbColor(); color.Red = LabelColor.R; color.Green = LabelColor.G; color.Blue = LabelColor.B; pTextSyl.Color = color; IBasicOverposterLayerProperties pBasic = new BasicOverposterLayerProperties(); IPointPlacementPriorities pPlacementPoint = new PointPlacementPriorities(); pBasic.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint; pBasic.PointPlacementPriorities = pPlacementPoint; pBasic.PointPlacementOnTop = false; pBasic.PointPlacementMethod = esriOverposterPointPlacementMethod.esriOnTopPoint; ILabelEngineLayerProperties labelField = new LabelEngineLayerProperties() as ILabelEngineLayerProperties; //IFeatureClass fClass = ((IFeatureLayer)labelLayer).FeatureClass; //IFields fields = fClass.Fields; //String fieldName = fields.get_Field(this.cbxField.SelectedIndex).Name; string fieldName = (string)cbxField.SelectedItem; //Console.WriteLine(fields.FindField(fieldName)); labelField.Expression = "[" + fieldName + "]"; //set postion labelField.BasicOverposterLayerProperties = pBasic; //set symbol labelField.Symbol = pTextSyl; IAnnotateLayerProperties annoProp = labelField as IAnnotateLayerProperties; annoPropCol.Add(annoProp); gLabelLayer.DisplayAnnotation = true; m_map.Refresh(); } }
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(); } }
//标注图层 public void FunLabelFeatureLayer(IFeatureLayer pFeaturelayer, string sLableField, IRgbColor pRGB, ITextSymbol textSymbol) { //判断图层是否为空 if (pFeaturelayer == null) { return; } IGeoFeatureLayer pGeoFeaturelayer = (IGeoFeatureLayer)pFeaturelayer; IAnnotateLayerPropertiesCollection pAnnoLayerPropsCollection; pAnnoLayerPropsCollection = pGeoFeaturelayer.AnnotationProperties; pAnnoLayerPropsCollection.Clear(); //未指定字体颜色则默认为黑色 if (pRGB == null) { pRGB = new RgbColor(); pRGB.Red = 0; pRGB.Green = 0; pRGB.Blue = 0; } IBasicOverposterLayerProperties pBasicOverposterlayerProps = new BasicOverposterLayerProperties(); switch (pFeaturelayer.FeatureClass.ShapeType)//判断图层类型 { case esriGeometryType.esriGeometryPolygon: pBasicOverposterlayerProps.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolygon; break; case esriGeometryType.esriGeometryPoint: pBasicOverposterlayerProps.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint; break; case esriGeometryType.esriGeometryPolyline: pBasicOverposterlayerProps.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline; break; } ILabelEngineLayerProperties pLabelEnginelayerProps = new LabelEngineLayerProperties() as ILabelEngineLayerProperties; pLabelEnginelayerProps.Expression = "[" + sLableField + "]"; pLabelEnginelayerProps.Symbol = textSymbol; pLabelEnginelayerProps.BasicOverposterLayerProperties = pBasicOverposterlayerProps; pAnnoLayerPropsCollection.Add((IAnnotateLayerProperties)pLabelEnginelayerProps); pGeoFeaturelayer.DisplayAnnotation = true; }
protected override void OnClick() { IMap map = ArcMap.Document.ActiveView as IMap; IGeoFeatureLayer geoFeatureLayer = map.get_Layer(0) as IGeoFeatureLayer; IAnnotateLayerPropertiesCollection annotateLayerPropertiesCollection = geoFeatureLayer.AnnotationProperties; LabelEngineLayerProperties labelEngineLayerProperties = new LabelEngineLayerProperties(); IAnnotateLayerProperties annotateLayerProperties = labelEngineLayerProperties as IAnnotateLayerProperties; IElementCollection placedElements = new ElementCollection(); IElementCollection unplacedElements = new ElementCollection(); annotateLayerPropertiesCollection.QueryItem(1, out annotateLayerProperties, out placedElements, out unplacedElements); // 0 = default, 1 = 1st Class string className = annotateLayerProperties.Class; System.Diagnostics.Debug.WriteLine("Class Name: " + className); ArcMap.Application.CurrentTool = null; }
// ********************* // Author: Erika Kamptner // Created Date: 3/13/2017 // Description: The LabelFeatures function is used throughout the LoadCSCLFeatureClass method by applying a string // expression to the pGeoFeatureLayer. // // ************************** public static void LabelFeatures(IGeoFeatureLayer pGeoFeatureLayer, string strExpression) { IAnnotateLayerPropertiesCollection pAnnoLayer; pAnnoLayer = pGeoFeatureLayer.AnnotationProperties; IAnnotateLayerProperties pAnnoLayerProps; pAnnoLayerProps = new LabelEngineLayerProperties() as IAnnotateLayerProperties; IElementCollection placedElements = new ElementCollectionClass(); IElementCollection unplacedElements = new ElementCollectionClass(); pAnnoLayer.QueryItem(0, out pAnnoLayerProps, out placedElements, out unplacedElements); ILabelEngineLayerProperties pLabelProps; pLabelProps = (ILabelEngineLayerProperties)pAnnoLayerProps; pLabelProps.Symbol.Color = SetColor(0, 0, 0); pLabelProps.Expression = strExpression; }
/// <summary> /// 从图层对应节点的XML中读取当前层的标注设置 /// </summary> /// <param name="pAnnoLayerProper"></param> public static void ReadLabelConfigFromXML(ref IAnnotateLayerProperties pAnnoLayerProper, XmlNode nodeLayerXml, string pFeatureType) { //设置标注的相关信息 ; ILabelEngineLayerProperties pLabelEngineLayerProperties = null; if (pAnnoLayerProper == null) { pLabelEngineLayerProperties = new LabelEngineLayerProperties() as ILabelEngineLayerProperties; pAnnoLayerProper = pLabelEngineLayerProperties as IAnnotateLayerProperties; } else { pLabelEngineLayerProperties = pAnnoLayerProper as ILabelEngineLayerProperties; } IAnnotationExpressionEngine pAnnoVBScriptEngine = new AnnotationVBScriptEngineClass(); pLabelEngineLayerProperties.ExpressionParser = pAnnoVBScriptEngine; IBasicOverposterLayerProperties4 pBasicOverposterLayerProperties = pLabelEngineLayerProperties.BasicOverposterLayerProperties as IBasicOverposterLayerProperties4; switch (pFeatureType) { case "esriGeometryPoint": pBasicOverposterLayerProperties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint; break; case "esriGeometryPolyline": pBasicOverposterLayerProperties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline; break; case "esriGeometryPolygon": pBasicOverposterLayerProperties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolygon; break; } ITextSymbol pTextSymbol = pLabelEngineLayerProperties.Symbol; IFontDisp pFont = pTextSymbol.Font; foreach (XmlNode nd in nodeLayerXml) { if (nd.Name == "AttrLabel") { //读取共同的标注设置信息 pFont.Name = nd.Attributes["FontName"].Value; pFont.Size = Convert.ToDecimal(nd.Attributes["FontSize"].Value.ToLower()); if (nd.Attributes["FontBold"].Value != "") { pFont.Bold = Convert.ToBoolean(nd.Attributes["FontBold"].Value.ToLower()); } if (nd.Attributes["FontItalic"].Value != "") { pFont.Italic = Convert.ToBoolean(nd.Attributes["FontItalic"].Value.ToLower()); } if (nd.Attributes["FontUnderLine"].Value != "") { pFont.Underline = Convert.ToBoolean(nd.Attributes["FontUnderLine"].Value.ToLower()); } pTextSymbol.Font = pFont; IColor pColor = new RgbColorClass(); if (nd.Attributes["FontBoldColor"].Value != "") { pColor.RGB = Convert.ToInt32(nd.Attributes["FontBoldColor"].Value); } else { pColor.RGB = 36054566; //pColor.Green = 0; //pColor.Blue = 0; pTextSymbol.Color = pColor as IColor; } pTextSymbol.Color = pColor; if (nd.Attributes["Expression"].Value != "") { pLabelEngineLayerProperties.Expression = "[" + nd.Attributes["Expression"].Value + "]"; } if (nd.Attributes["MaxScale"].Value != "" && nd.Attributes["MaxScale"].Value != null) { pAnnoLayerProper.AnnotationMaximumScale = Convert.ToDouble(nd.Attributes["MaxScale"].Value); } if (nd.Attributes["MinScale"].Value != "" && nd.Attributes["MinScale"].Value != null) { pAnnoLayerProper.AnnotationMinimumScale = Convert.ToDouble(nd.Attributes["MinScale"].Value); } if (nd.Attributes["NumLabelsOption"].Value == "esriOneLabelPerName") { pBasicOverposterLayerProperties.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerName; } else if (nd.Attributes["NumLabelsOption"].Value == "esriOneLabelPerPart") { pBasicOverposterLayerProperties.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerPart; } else if (nd.Attributes["NumLabelsOption"].Value == "esriOneLabelPerShape") { pBasicOverposterLayerProperties.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerShape; } //下面按不同要素类型读取不同的标注设置信息 //点要素 if (pBasicOverposterLayerProperties.FeatureType == esriBasicOverposterFeatureType.esriOverposterPoint) { pBasicOverposterLayerProperties.PointPlacementOnTop = Convert.ToBoolean(nd.Attributes["PointPlacementOnTop"].Value.ToLower()); if (nd.Attributes["PointPlacementMethod"].Value == "esriAroundPoint") { pBasicOverposterLayerProperties.PointPlacementMethod = esriOverposterPointPlacementMethod.esriAroundPoint; IPointPlacementPriorities pPointPlacementPriorities = pBasicOverposterLayerProperties.PointPlacementPriorities; string strPlacement; try { //读取标注位置的设置 strPlacement = nd.Attributes["PointPlacementPriorities"].Value; SetPlacementPriotities(pPointPlacementPriorities, strPlacement); pBasicOverposterLayerProperties.PointPlacementPriorities = pPointPlacementPriorities; } catch { //MessageBox.Show("该图层XML中不存在PointPlacementPriorities属性!"); } } else if (nd.Attributes["PointPlacementMethod"].Value == "esriOnTopPoint") { pBasicOverposterLayerProperties.PointPlacementMethod = esriOverposterPointPlacementMethod.esriOnTopPoint; } else if (nd.Attributes["PointPlacementMethod"].Value == "esriSpecifiedAngles") { double[] dArray = new double[1]; string sAngle = nd.Attributes["PointPlacementAngles"].Value; if (sAngle.Contains(",") == false) { dArray[0] = Convert.ToDouble(sAngle); } else { string[] sAngles = sAngle.Split(new char[] { ',' }); dArray = new double[sAngles.Length]; for (int i = 0; i < sAngles.Length; i++) { dArray[i] = Convert.ToDouble(sAngles[i]); } } pBasicOverposterLayerProperties.PointPlacementAngles = dArray; } else if (nd.Attributes["PointPlacementMethod"].Value == "esriRotationField") { pBasicOverposterLayerProperties.PointPlacementMethod = esriOverposterPointPlacementMethod.esriRotationField; pBasicOverposterLayerProperties.RotationField = nd.Attributes["RotationField"].Value; if (nd.Attributes["RotationType"].Value == "esriRotateLabelArithmetic") { pBasicOverposterLayerProperties.RotationType = esriLabelRotationType.esriRotateLabelArithmetic; } else if (nd.Attributes["RotationType"].Value == "esriRotateLabelGeographic") { pBasicOverposterLayerProperties.RotationType = esriLabelRotationType.esriRotateLabelGeographic; } pBasicOverposterLayerProperties.PerpendicularToAngle = Convert.ToBoolean(nd.Attributes["PerpendicularToAngle"].Value); } } //线要素 else if (pBasicOverposterLayerProperties.FeatureType == esriBasicOverposterFeatureType.esriOverposterPolyline) { ILineLabelPosition pLineLabelPosition = pBasicOverposterLayerProperties.LineLabelPosition; if (nd.Attributes["Above"] != null) { pLineLabelPosition.Above = Convert.ToBoolean(nd.Attributes["Above"].Value); } if (nd.Attributes["AtEnd"] != null) { pLineLabelPosition.AtEnd = Convert.ToBoolean(nd.Attributes["AtEnd"].Value); } if (nd.Attributes["AtStart"] != null) { pLineLabelPosition.AtStart = Convert.ToBoolean(nd.Attributes["AtStart"].Value); } if (nd.Attributes["Below"] != null) { pLineLabelPosition.Below = Convert.ToBoolean(nd.Attributes["Below"].Value); } if (nd.Attributes["Horizontal"] != null) { pLineLabelPosition.Horizontal = Convert.ToBoolean(nd.Attributes["Horizontal"].Value); } if (nd.Attributes["InLine"] != null) { pLineLabelPosition.InLine = Convert.ToBoolean(nd.Attributes["InLine"].Value); } if (nd.Attributes["Left"] != null) { pLineLabelPosition.Left = Convert.ToBoolean(nd.Attributes["Left"].Value); } if (nd.Attributes["Offset"] != null) { pLineLabelPosition.Offset = Convert.ToDouble(nd.Attributes["Offset"].Value); } if (nd.Attributes["OnTop"] != null) { pLineLabelPosition.OnTop = Convert.ToBoolean(nd.Attributes["OnTop"].Value); } if (nd.Attributes["Parallel"] != null) { pLineLabelPosition.Parallel = Convert.ToBoolean(nd.Attributes["Parallel"].Value); } if (nd.Attributes["Perpendicular"] != null) { pLineLabelPosition.Perpendicular = Convert.ToBoolean(nd.Attributes["Perpendicular"].Value); } if (nd.Attributes["ProduceCurvedLabels"] != null) { pLineLabelPosition.ProduceCurvedLabels = Convert.ToBoolean(nd.Attributes["ProduceCurvedLabels"].Value); } if (nd.Attributes["Right"] != null) { pLineLabelPosition.Right = Convert.ToBoolean(nd.Attributes["Right"].Value); } } //面要素 else if (pBasicOverposterLayerProperties.FeatureType == esriBasicOverposterFeatureType.esriOverposterPolygon) { if (nd.Attributes["PolygonPlacementMethod"].Value == "esriAlwaysHorizontal") { pBasicOverposterLayerProperties.PolygonPlacementMethod = esriOverposterPolygonPlacementMethod.esriAlwaysHorizontal; } else if (nd.Attributes["PolygonPlacementMethod"].Value == "esriAlwaysStraight") { pBasicOverposterLayerProperties.PolygonPlacementMethod = esriOverposterPolygonPlacementMethod.esriAlwaysStraight; } else if (nd.Attributes["PolygonPlacementMethod"].Value == "esriMixedStrategy") { pBasicOverposterLayerProperties.PolygonPlacementMethod = esriOverposterPolygonPlacementMethod.esriMixedStrategy; } pBasicOverposterLayerProperties.PlaceOnlyInsidePolygon = Convert.ToBoolean(nd.Attributes["PlaceOnlyInsidePolygon"].Value); } } } }