• PIE SDK专题制图新建模板


     

    1.   功能简介

    在PIE SDK中,所有的制图元素、视图范围以及排版等都可以保存成一个模板,以供多次重复使用。使用时只需要打开该模板,加载相应数据,就可以直接出图了,省去了重复制作图幅的麻烦,方便快捷。

    2. 功能实现说明

    2.1新建模板

           在PIE中,每个显示的地图都是一个地图文档(PmdContents),它可以保存为*.pmd文件。新建的地图文档可以直接替换当前地图文档,并替换其中的地图、制图对象。

    2.2 实现思路及原理说明

    第一步

    获取当前模板,并判断是否保存当前模板

    第二步

    新建一个mapDocument,将其中的focusMap赋值给mapControl

    第三步

    将mapDocument的pagelayout对象赋值给pageLayoutControl

    第四步

    刷新视图

    2.3 核心接口与方法

    接口/类

    方法

    说明

    MapDocument

    ReplaceContents ()

    替换mapDocument中内容

    MapDocument

    SaveAs ()

    另存地图文档

    2.4示例代码

    示例代码

     1 /// <summary>
     2 /// 新建地图工程
     3 /// </summary>
     4 private void NewPmd()
     5 {
     6     //保存当前地图文档
     7     DialogResult resultType = MessageBox.Show("是否保存当前地图工程", "新建地图工程", MessageBoxButtons.YesNoCancel);
     8     if (resultType == DialogResult.Cancel)
     9     {
    10         return;
    11     }
    12     else if (resultType == DialogResult.Yes)
    13     {
    14         //获取当前地图文档
    15         IMapDocument mapDocument = (pageLayoutControl1 as Control).Tag as IMapDocument; //PIE DesktopCommand中可用m_Application.MapDocument来获取
    16         if (mapDocument == null)
    17         {
    18             mapDocument = new MapDocument();
    19             mapDocument.ReplaceContents(pageLayoutControl1);
    20         }
    21 
    22         // 获得保存路径信息
    23         string pmdFilePath = mapDocument.GetDocumentFilename();
    24         if (string.IsNullOrEmpty(pmdFilePath))
    25         {
    26             SaveFileDialog saveFileDialog = new SaveFileDialog();
    27             saveFileDialog.Title = "地图文档另存为:";
    28             saveFileDialog.Filter = "PMD|*.pmd";
    29             if (saveFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
    30             pmdFilePath = saveFileDialog.FileName;
    31             if (string.IsNullOrEmpty(pmdFilePath)) return;
    32         }
    33         if (!pmdFilePath.EndsWith(".pmd"))
    34         {
    35             pmdFilePath = pmdFilePath + ".pmd";
    36         }
    37         mapDocument.SaveAs(pmdFilePath, true, true);
    38     }
    39 
    40     //新建地图文档
    41     IMapDocument newMapDocument = new MapDocument();
    42     newMapDocument.New("");  
    43 
    44     //为PageLayoutControl设置PageLayout
    45     IPageLayout newPageLayout = newMapDocument.GetPageLayout();
    46     pageLayoutControl1.PageLayout = newPageLayout;
    47 
    48     //为MapControl设置Map
    49     IMap newMap = (newPageLayout as IActiveView).FocusMap;
    50     mapControl1.FocusMap = newMap;
    51 
    52     //将mapDocument对象存入tag属性中,以备后续使用
    53     (pageLayoutControl1 as Control).Tag = newMapDocument;
    54 
    55     //激活并刷新控件
    56     if (tabControlMain.SelectedIndex == 0)
    57     {
    58         pageLayoutControl1.DeActivate();
    59         mapControl1.Activate();
    60         mapControl1.PartialRefresh(ViewDrawPhaseType.ViewAll);
    61     }
    62     else
    63     {
    64         mapControl1.DeActivate();
    65         pageLayoutControl1.Activate();
    66         pageLayoutControl1.PartialRefresh(ViewDrawPhaseType.ViewAll);
    67     }
    68 }
    View Code
  • 相关阅读:
    剑指offer14-链表中倒数第k个结点
    剑指offer15-翻转链表
    Matlab矩阵操作
    CUDA线程
    CUDA编程前言
    ROS常用工具
    ROS理解参数服务器param demo
    ROS手动编写服务端和客户端service demo(C++)
    ROS手动编写消息发布器和订阅器topic demo(C++)
    ROS参数服务器(Parameter Server)
  • 原文地址:https://www.cnblogs.com/PIESat/p/13274532.html
Copyright © 2020-2023  润新知