zoukankan      html  css  js  c++  java
  • AE开发能否实现TOC Control里添加多个Data Frame

    问题:

    ArcMap中,菜单InsertData Frame,可以在TOC中增加Data Frame,在MapControl或者PageLayoutControl下都可以正常显示多个Data Frame,并且这些Data Frame可以方便切换,

    但是在AE开发中,MapControl无法实现此效果,需要特殊控制(如何控制?)还是无法实现?

    易智瑞(中国)信息技术有限公司客户与合作伙伴支持部 石羽  回复:

    ArcMapToc窗体实际仅和Pagelayout窗体进行绑定,切换窗体时并没有切换绑定关系。

    Map窗体与Pagelayout窗体同步有很多实现方法,ArcMap中采用的方法没有公开,您可自行研究。

    这样确实可以解决此问题Toc窗体显示Pagelayout窗体的多个dataframe,MapControl不和Toc窗体绑定,这样切换视图时Toc窗体也不会变化的(MapControl只可以显示一个dataframe)

    这时只需要增加其他几项控制就可以了

    1.MapControl, Pagelayout 显示内容保持一致。

    这个可以通过硬拷贝的方法,可以参考安装目录  Program FilesArcGISDeveloperKitSamplesNETEnginePageLayoutControlCopyFocusMap这个例子

     

    2.实现不同dataframe切换问题,类似ArcMap右键菜单Activate

    利用IMapDocument.Map(mapIndex )来实现

    3.实现新增dataframe功能

    pGraphicsContainer = axPageLayoutControl1.ActiveView.GraphicsContainer;
    pActiveView = axPageLayoutControl1.ActiveView;
    pMap = axPageLayoutControl1.ActiveView.FocusMap;

    IMapFrame pMapFrame=new MapFrameClass();
    IEnvelope pMapExt= new EnvelopeClass();

    pMapFrame.Map = pMap;
    pMapExt.PutCoords( pActiveView.XMin, pActiveView.YMin, pActiveView.XMax, pActiveView.YMax);

    IElement pMapElement;
    IGeometry pGeoExt;
    pMapElement = pMapFrame as IElement;
    pGeoExt = pMapExt;
    pMapElement.Geometry = pGeoExt;
    pGraphicsContainer.AddElement(pMapElement, 1);
    axPageLayoutControl1.Refresh();

    4.实现删除dataframe功能

    pActiveView = axPageLayoutControl1.PageLayout as IActiveView ;

    pMap = pActiveView.FocusMap;
    pGC = pActiveView as IGraphicsContainer;
    pMF = pGC.FindFrame(pMap) as IMapFrame ;
    pGC.DeleteElement(pMF  as iElement);
     
    代码仅供参考。
  • 相关阅读:
    2019.9.4 二维树状数组
    2019.9.4 简单题
    0052-YH的计算器
    0051-打乱顺序的三位数
    0050-计算天数
    0049-学校的上网费
    0048-三角形的判断
    0047-月份转换
    0046-简单的分段函数(二)
    0045-简单的分段函数(一)
  • 原文地址:https://www.cnblogs.com/jhlong/p/5394442.html
Copyright © 2011-2022 走看看