• ArcEngine 图层标注 (根据字段、角度)


    转自chanyinhelv原文 ArcEngine 图层标注 (根据字段、角度)

    今天做了一个用AE来控制图层是否显示标注,以及已哪一个字段作为标注的字段,以哪一个字段作为标注的角度,现将代码写下来,以备以后差用。

    public void EnableFeatureLayerLabel(IFeatureLayer pFeaturelayer, string sLableField, IRgbColor pRGB, int size, string angleField)  
    {  
        //判断图层是否为空  
        if (pFeaturelayer == null)  
            return;  
        IGeoFeatureLayer pGeoFeaturelayer = (IGeoFeatureLayer)pFeaturelayer;  
        IAnnotateLayerPropertiesCollection pAnnoLayerPropsCollection;  
        pAnnoLayerPropsCollection = pGeoFeaturelayer.AnnotationProperties;  
        pAnnoLayerPropsCollection.Clear();  
      
        //stdole.IFontDisp  pFont; //字体  
        ITextSymbol pTextSymbol;  
      
        //pFont.Name = "新宋体";  
        //pFont.Size = 9;  
        //未指定字体颜色则默认为黑色  
        if (pRGB == null)  
        {  
            pRGB = new RgbColorClass();  
            pRGB.Red = 0;  
            pRGB.Green = 0;  
            pRGB.Blue = 0;  
        }  
      
        pTextSymbol = new TextSymbolClass();  
        pTextSymbol.Color = (IColor)pRGB;  
        pTextSymbol.Size = size; //标注大小  
      
        IBasicOverposterLayerProperties4 pBasicOverposterlayerProps4 = new BasicOverposterLayerPropertiesClass();  
        switch (pFeaturelayer.FeatureClass.ShapeType)//判断图层类型  
        {  
            case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon:  
                pBasicOverposterlayerProps4.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolygon;  
                break;  
            case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint:  
                pBasicOverposterlayerProps4.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint;  
                break;  
            case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline:  
                pBasicOverposterlayerProps4.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline;  
                break;  
        }   
        pBasicOverposterlayerProps4.PointPlacementMethod = esriOverposterPointPlacementMethod.esriRotationField;  
        pBasicOverposterlayerProps4.RotationField = angleField;  
      
        ILabelEngineLayerProperties pLabelEnginelayerProps = new LabelEngineLayerPropertiesClass();   
        pLabelEnginelayerProps.Expression = "[" + sLableField + "]";  
        pLabelEnginelayerProps.Symbol = pTextSymbol;  
        pLabelEnginelayerProps.BasicOverposterLayerProperties = pBasicOverposterlayerProps4 as IBasicOverposterLayerProperties;  
        pAnnoLayerPropsCollection.Add((IAnnotateLayerProperties)pLabelEnginelayerProps);  
        pGeoFeaturelayer.DisplayAnnotation = true;//很重要,必须设置   
        //axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewBackground, null, null); }  
    }  
  • 相关阅读:
    Java基础-集合框架的学习大纲
    Java多线程并发学习-进阶大纲
    Spring学习大纲
    Netty学习大纲
    分布式学习大纲
    数据库学习大纲
    缓存学习大纲
    JVM-jvm学习大纲(0)
    多线程学习-基础(十三)(学习参考·网摘) ArrayBlockingQueue源代碼解析(base jdk 1.8)
    C#数字图像处理算法学习笔记(一)--C#图像处理的3中方法
  • 原文地址:https://www.cnblogs.com/arxive/p/6262450.html
Copyright © 2020-2023  润新知