semon1981
路人甲
路人甲
  • 注册日期2006-06-04
  • 发帖数28
  • QQ
  • 铜币198枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2486回复:5

pagelayout从mapcontrol中读取数据并打印输出

楼主#
更多 发布于:2006-06-09 15:34
<P>pagelayout控件能不能从mapctrol中读取图层,或者说通过sde读数据库中的图层数据。</P>
<P>现在用.net+AE写系统,需要打印输出,就是说在mapcontrol中进行的操作如符号化制作专题地图、加标记在地图上等,现在需要打印这些符号状态,把mapcontrol中这些符号及地图都读到pagelayout 中,再在pagelayout中进行下一步的布局编辑,如加指北针等,最后打印输出。</P>
<P>想法一:把mapcontrol中把数据导出成图像文件格式,再打印,缺点是不能再进行布局</P>
<P>想法二:把mapcontrol中加的标记等操作记录下来,再在pagelayout中显示出来</P>
<P>难点:现在不知道如何加载除mxd文件以外的地图数据到pagelayout中,记录操作也繁琐</P>
<P>谁能给点思路哈,先谢了</P>
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2006-06-09 15:41
查看帮助里的CopyFocusMap Sample
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
semon1981
路人甲
路人甲
  • 注册日期2006-06-04
  • 发帖数28
  • QQ
  • 铜币198枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2006-06-09 17:14
<P>谢谢你,但这个sample是从pageLayout中复制内容到mapcontrol中,源代码为</P>
<P>//Get IObjectCopy interface<BR>   IObjectCopy objectCopy = new ObjectCopyClass(); </P>
<P>   //Get IUnknown interface (map to copy)<BR>   object toCopyMap = axPageLayoutControl1.ActiveView.FocusMap;</P>
<P>   //Get IUnknown interface (copied map)<BR>   object copiedMap = objectCopy.Copy(toCopyMap);</P>
<P>   //Get IUnknown interface (map to overwrite)<BR>   object toOverwriteMap = axMapControl1.Map;</P>
<P>   //Overwrite the MapControl's map<BR>   objectCopy.Overwrite(copiedMap, ref toOverwriteMap);</P>
<P>我要的是从mapcontrol中复制到pageLayout中, 我试着改了一下,还是不行,pageLayout中没有东西阿</P>
<P>这个是为什么?</P>
<P>我改的:</P>
<P>           IObjectCopy objectCopy = new ObjectCopyClass();</P>
<P>            //Get IUnknown interface (map to copy)<BR>            object toCopyMap = map.Map;//mapControl</P>
<P>            //Get IUnknown interface (copied map)<BR>            object copiedMap = objectCopy.Copy(toCopyMap);</P>
<P>            //Get IUnknown interface (map to overwrite)<BR>            object toOverwriteMap = pageLayoutCtrl.ActiveView.FocusMap;//pageLayoutControl</P>
<P>            //Overwrite the MapControl's map<BR>            objectCopy.Overwrite(copiedMap, ref toOverwriteMap);</P>
<P>先谢了!!!!!!!!!!!!!!!!!!!!!!</P>

举报 回复(0) 喜欢(0)     评分
semon1981
路人甲
路人甲
  • 注册日期2006-06-04
  • 发帖数28
  • QQ
  • 铜币198枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2006-06-09 17:28
<P>忘记刷新了,呵呵,谢谢了哈</P>
<P>再次感谢你!</P>
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
4楼#
发布于:2006-06-09 17:29
<P>详细请看</P>
<P><a href="http://www.gisempire.com/bbs/dispbbs.asp?BoardID=62;ID=39594" target="_blank" >http://www.gisempire.com/bbs/dispbbs.asp?BoardID=62;ID=39594</A></P>

<P>Private Sub CopyFocusMap()<BR>'  Dim i As Integer</P>
<P>'  For i = 0 To m_pPMap.LayerCount - 1<BR>'    PageLayoutControl1.ActiveView.FocusMap.AddLayer m_pPMap.layer(i)<BR>'  Next<BR>    '获取 IObjectCopy 接口<BR>    Dim pObjectCopy As IObjectCopy<BR>    Set pObjectCopy = New ObjectCopy</P>
<P>    '获取 IUnknown 接口 (源“Map”)<BR>    Dim pToCopyMap As IUnknown<BR>    Set pToCopyMap = frmMap.map1.ActiveView.FocusMap 'm_pPactiveview.FocusMap</P>
<P>    '获取 IUnknown 接口 (参与复制的源“Map”)<BR>    Dim pCopiedMap As IUnknown<BR>    Set pCopiedMap = pObjectCopy.Copy(pToCopyMap)</P>
<P>    '获取 IUnknown 接口 (目的“Map”)<BR>    Dim pToOverwriteMap As IUnknown<BR>    Set pToOverwriteMap = PageLayoutControl1.ActiveView.FocusMap</P>
<P>    '复制 Map<BR>    pObjectCopy.Overwrite pCopiedMap, pToOverwriteMap</P>
<P>    <BR>    '设置 PageLayoutControl 的 Extent<BR>   <BR>    PageLayoutControl1.Extent = frmMap.map1.Extent 'm_pPactiveview.Extent  ''hzm<BR>   <BR>    '刷新显示<BR>    PageLayoutControl1.Refresh esriViewGraphics</P>
<P>End Sub</P>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
semon1981
路人甲
路人甲
  • 注册日期2006-06-04
  • 发帖数28
  • QQ
  • 铜币198枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2006-06-13 15:42
<img src="images/post/smile/dvbbs/em02.gif" />
举报 回复(0) 喜欢(0)     评分
游客

返回顶部