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

本文介绍了一种使用ArcEngine (AE) 控制图层显示及其标注的方法,通过代码实现了图层可见性、标注字段选择、角度字段指定等功能,并提供了具体实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天做了一个用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); }  
}  
复制代码

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。


    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/6262450.html,如需转载请自行联系原作者


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值