예제 #1
0
        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();
        }
예제 #2
0
        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();
        }
예제 #3
0
        /// <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();
        }
예제 #4
0
        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();
        }
예제 #5
0
        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();
            }
        }
예제 #6
0
파일: Form1.cs 프로젝트: Flame-c/CYHGIS
        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);
        }
예제 #7
0
        //文本标注
        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();
            }
        }
예제 #8
0
        //标注图层
        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;
        }
예제 #10
0
        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;
        }
예제 #11
0
        // *********************
        //      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;
        }
예제 #12
0
        /// <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);
                    }
                }
            }
        }