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

 

 

posted @ 2020-07-09 16:42  PIESAT  阅读(707)  评论(0编辑  收藏  举报