热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AE:显示注记

附:1.注记可显示,但和图形对齐的方式没找到;2.没加注释---有愿意的不愿意。HRESULThrE_FAIL;IGeoFeatureLa

    //附:1.注记可显示,但和图形对齐的方式没找到;2.没加注释---有愿意的不愿意。

    HRESULT hr = E_FAIL;
    IGeoFeatureLayerPtr pGeoFeaLyr;
    IMapControl2Ptr pMapControl; 
    pMapControl=m_MapCtrl.get_Object();

    pGeoFeaLyr=pMapControl->GetLayer(2);//层索引
    if(pGeoFeaLyr  == NULL) return;
    //
    ILineLabelPlacementPrioritiesPtr pLineLabPlaPrior(__uuidof(LineLabelPlacementPriorities));
    hr = pLineLabPlaPrior->put_AboveAfter(3);
    hr = pLineLabPlaPrior->put_AboveAlong(1);
    hr = pLineLabPlaPrior->put_AboveBefore(3);
    hr = pLineLabPlaPrior->put_AboveEnd(3);
    hr = pLineLabPlaPrior->put_AboveStart(3);
    hr = pLineLabPlaPrior->put_BelowAfter(3);
    hr = pLineLabPlaPrior->put_BelowAlong(3);
    hr = pLineLabPlaPrior->put_BelowBefore(3);
    hr = pLineLabPlaPrior->put_BelowEnd(3);
    hr = pLineLabPlaPrior->put_BelowStart(3);
    hr = pLineLabPlaPrior->put_CenterAfter(3);
    hr = pLineLabPlaPrior->put_CenterAlong(3);
    hr = pLineLabPlaPrior->put_CenterBefore(3);
    hr = pLineLabPlaPrior->put_CenterEnd(3);
    hr = pLineLabPlaPrior->put_CenterStart(3);
    //
    
    //
    ILineLabelPositionPtr pLineLabPos(__uuidof(LineLabelPosition));
    hr = pLineLabPos->put_Above(TRUE);
    hr = pLineLabPos->put_AtEnd(FALSE);
    hr = pLineLabPos->put_AtStart(FALSE);
    hr = pLineLabPos->put_Below(FALSE);
    hr = pLineLabPos->put_InLine(FALSE);
    hr = pLineLabPos->put_Left(FALSE);
    hr = pLineLabPos->put_OnTop(FALSE);
    hr = pLineLabPos->put_Right(FALSE);
    hr = pLineLabPos->put_Parallel(TRUE);
    hr = pLineLabPos->put_Perpendicular(FALSE);
    hr = pLineLabPos->put_Horizontal(FALSE);

    //
   
    //
    IPointPlacementPrioritiesPtr pPtPlacePrior(__uuidof(PointPlacementPriorities));
    hr = pPtPlacePrior->put_AboveCenter(2);
    hr = pPtPlacePrior->put_AboveLeft(3);
    hr = pPtPlacePrior->put_AboveRight(1);
    hr = pPtPlacePrior->put_BelowCenter(3);
    hr = pPtPlacePrior->put_BelowLeft(3);
    hr = pPtPlacePrior->put_BelowRight(3);
    hr = pPtPlacePrior->put_CenterLeft(30);
    hr = pPtPlacePrior->put_CenterRight(2);
    //
    IBasicOverposterLayerPropertiesPtr pBasicOverLyrProps(__uuidof(BasicOverposterLayerProperties));
    hr = pBasicOverLyrProps->put_NumLabelsOption(esriNoLabelRestrictions);
    hr = pBasicOverLyrProps->put_PointPlacementPriorities(pPtPlacePrior);
    hr = pBasicOverLyrProps->put_LineLabelPosition(pLineLabPos);
    hr = pBasicOverLyrProps->put_LineLabelPlacementPriorities(pLineLabPlaPrior);
    //
    CString sExpress;
    //sExpress.Format("Function FindLabel([Name],[Rank]) /n/rFindLabel=Right([Name],1)&[Rank]/n/rEnd Function");//复杂标到式,下面的IsExpressionSimple需设为FALSE
    sExpress = _T("[ObjectID]& [Name]");//

    ILabelEngineLayerPropertiesPtr pLabEngLyrProps(__uuidof(LabelEngineLayerProperties));
    IAnnotateLayerPropertiesCollectionPtr pAnnoLyrPropsColl;
    pGeoFeaLyr->get_AnnotationProperties(&pAnnoLyrPropsColl);
    if(pAnnoLyrPropsColl == NULL) return;
    pAnnoLyrPropsColl->Clear();
    IAnnotateLayerPropertiesPtr pAnnoLyrProps = pLabEngLyrProps;
    pAnnoLyrProps->put_WhereClause((_bstr_t)"[ObjectID] <&#61; 3");

    //
    hr &#61; pLabEngLyrProps->put_Expression(sExpress.AllocSysString());
    hr &#61; pLabEngLyrProps->put_IsExpressionSimple(VARIANT_TRUE);
    //hr &#61; pLabEngLyrProps->put_IsExpressionSimple(VARIANT_FALSE);
    hr &#61; pLabEngLyrProps->putref_BasicOverposterLayerProperties(pBasicOverLyrProps);

    IAnnotationExpressionEnginePtr pAnnoExpEng(__uuidof(AnnotationVbscriptEngine));
    IAnnotationExpressionParserPtr pAnnoExpParser;
    hr &#61; pAnnoExpEng->raw_SetExpression(_bstr_t(""),sExpress.AllocSysString(),&pAnnoExpParser);
    hr &#61; pLabEngLyrProps->putref_ExpressionParser(pAnnoExpEng);

 

    IColorPtr pColor(__uuidof(RgbColor));
    pColor->put_RGB(RGB(255,0,0));

    IFontPtr pFont;
    pFont.CreateInstance("StdFont");
    pFont->put_Name((_bstr_t)"仿宋_GB2321");
    pFont->put_Bold(TRUE);
    CY cy;
    cy.Hi &#61; 10 * 80;
    cy.Lo &#61; 8 * 80;
    pFont->put_Size(cy);
    pFont->put_Italic(FALSE);
    pFont->put_Underline(FALSE);
    pFont->put_Strikethrough(FALSE);

    IFontDispPtr pFontDisp(pFont);


    ITextSymbolPtr pTextSym(__uuidof(TextSymbol));
    pTextSym->put_Font(pFontDisp);
    pTextSym->put_Size(18);
    pTextSym->put_Color(pColor);
    pTextSym->put_HorizontalAlignment(esriTHALeft);
    pTextSym->put_RightToLeft(VARIANT_TRUE);

    pLabEngLyrProps->putref_Symbol(pTextSym);
   
    pAnnoLyrPropsColl->Add(pAnnoLyrProps);
    pGeoFeaLyr->put_DisplayAnnotation(VARIANT_TRUE);
    IActiveViewPtr pAV;
    pAV&#61;pMapControl->GetActiveView();
    pAV->Refresh();

 

///

如下为C#代码

IAnnotateLayerPropertiesCollection pAnnoProps &#61; null;
//得到图层的标注属性集合对象

IAnnotateLayerProperties pAnnoLayerProps &#61; null; ;
ILineLabelPosition pPosition &#61; null;
ILineLabelPlacementPriorities pPlacement &#61; null;
IBasicOverposterLayerProperties pBasic &#61; null;
ILabelEngineLayerProperties pLabelEngine &#61; null;

pAnnoProps &#61; pGeoFeaLyr.AnnotationProperties;
pAnnoProps.Clear();
//新建标注文本的文本编号
ITextSymbol pTextSyl &#61; null;
pTextSyl &#61; new TextSymbolClass();

stdole.StdFont pFont;
pFont &#61; new stdole.StdFontClass();
pFont.Name &#61; "宋体";
pFont.Size &#61; 5;//字体大小
pTextSyl.Font &#61; pFont as stdole.IFontDisp;

IRgbColor pRGB &#61; new RgbColorClass();
pRGB.Red &#61; 110; pRGB.Blue &#61; 200; pRGB.Green &#61; 60;
pTextSyl.Color &#61; pRGB;

//设置标注文本的位置
pPosition &#61; new LineLabelPositionClass();
pPosition.Parallel &#61; false;
pPosition.Perpendicular &#61; true;
pPlacement &#61; new LineLabelPlacementPrioritiesClass();
pBasic &#61; new BasicOverposterLayerPropertiesClass();
pBasic.FeatureType &#61; esriBasicOverposterFeatureType.esriOverposterPolyline;

pBasic.LineLabelPlacementPriorities &#61; pPlacement;
pBasic.LineLabelPosition &#61; pPosition;
//新建一个图层标注引擎对象&#xff0c;设置它的属性
pLabelEngine &#61; new LabelEngineLayerPropertiesClass();
pLabelEngine.Symbol &#61; pTextSyl;
pLabelEngine.BasicOverposterLayerProperties &#61; pBasic;

//field必须是这种样式&#xff0c;如”[STATE_NAME]”
pLabelEngine.Expression &#61; sAnnoField;
pLabelEngine.Expression &#61; "[" &#43; sAnnoField &#43; "]";
pAnnoLayerProps &#61; pLabelEngine as IAnnotateLayerProperties;
pAnnoProps.Add(pAnnoLayerProps);
pGeoFeaLyr.DisplayAnnotation &#61; true;


推荐阅读
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • td{border:1pxsolid#808080;}参考:和FMX相关的类(表)TFmxObjectIFreeNotification ... [详细]
  • 本文详细介绍了在Luat OS中如何实现C与Lua的混合编程,包括在C环境中运行Lua脚本、封装可被Lua调用的C语言库,以及C与Lua之间的数据交互方法。 ... [详细]
  • ASP.NET 进度条实现详解
    本文介绍了如何在ASP.NET中使用HTML和JavaScript创建一个动态更新的进度条,并通过Default.aspx页面进行展示。 ... [详细]
  • 本文探讨了Python类型注解使用率低下的原因,主要归结于历史背景和投资回报率(ROI)的考量。文章不仅分析了类型注解的实际效用,还回顾了Python类型注解的发展历程。 ... [详细]
  • Zabbix自定义监控与邮件告警配置实践
    本文详细介绍了如何在Zabbix中添加自定义监控项目,配置邮件告警功能,并解决测试告警时遇到的邮件不发送问题。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 本文是对《敏捷软件开发:原则、模式与实践》一书的深度解析,书中不仅探讨了敏捷方法的核心理念及其应用,还详细介绍了面向对象设计的原则、设计模式的应用技巧及UML的有效使用。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
  • iOS开发中常用的设备标识符(IDFA、IDFV、MAC地址、UDID、openUDID)及其应用场景
    在iOS开发过程中,了解并合理使用各种设备标识符对于数据统计和用户分析至关重要。本文详细介绍了几种常用的设备标识符及其应用场景:IDFA(广告标识符)用于广告追踪和归因;IDFV(供应商标识符)适用于同一应用或同一开发者旗下的应用内识别用户;MAC地址和UDID(唯一设备标识符)虽然已被弃用,但在某些历史场景下仍有参考价值;而openUDID作为一种开源解决方案,提供了一种替代UDID的方法。这些标识符各有特点,开发者应根据具体需求选择合适的标识符。 ... [详细]
  • 本文深入探讨了WPF框架下的数据验证机制,包括内置验证规则的使用、自定义验证规则的实现方法、错误信息的有效展示策略以及验证时机的选择,旨在帮助开发者构建更加健壮和用户友好的应用程序。 ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • 在Linux环境下编译安装Heartbeat时,常遇到依赖库缺失的问题。为确保顺利安装,建议预先通过yum安装必要的开发库,如glib2-devel、libtool-ltdl-devel、net-snmp-devel、bzip2-devel和ncurses-devel等。这些库是编译过程中不可或缺的组件,能够有效避免编译错误,确保Heartbeat的稳定运行。 ... [详细]
author-avatar
baby小明君
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有