热门标签 | 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;


推荐阅读
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • [echarts] 同指标对比柱状图相关的知识介绍及应用示例
    本文由编程笔记小编为大家整理,主要介绍了echarts同指标对比柱状图相关的知识,包括对比课程通过率最高的8个课程和最低的8个课程以及全校的平均通过率。文章提供了一个应用示例,展示了如何使用echarts制作同指标对比柱状图,并对代码进行了详细解释和说明。该示例可以帮助读者更好地理解和应用echarts。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 网址:https:vue.docschina.orgv2guideforms.html表单input绑定基础用法可以通过使用v-model指令,在 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • 我用Tkinter制作了一个图形用户界面,有两个主按钮:“开始”和“停止”。请您就如何使用“停止”按钮终止“开始”按钮为以下代码调用的已运行功能提供建议 ... [详细]
  • 引号快捷键_首选项和设置——自定义快捷键
    3.3自定义快捷键(CustomizingHotkeys)ChemDraw快捷键由一个XML文件定义,我们可以根据自己的需要, ... [详细]
  • vb.net不用多线程如何同时运行两个过程?不用多线程?即使用多线程,也不会是“同时”执行,题主只要略懂一些计算机编译原理就能明白了。不用多线程更不可能让两个过程同步执行了。不过可 ... [详细]
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社区 版权所有