예제 #1
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);
        }
예제 #2
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();
            }
        }