• 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);
     
    代码仅供参考。
  • 相关阅读:
    关于数据库中浮点运算、保留小数和时间计算
    几个常用的操作
    数字转换为字符串
    Dll控件出错的处理办法
    小巧的服务程序源码(转)
    DELPHI中MDI子窗口的关闭和打开
    用Delphi创建服务程序
    Delphi如何获取QQ2010聊天窗口句柄?
    拖动Form上的图片,Form一起动
    仿药易通输入单位信息后如果没有则自动加入功能
  • 原文地址:https://www.cnblogs.com/jhlong/p/5394442.html
Copyright © 2020-2023  润新知