阅读:2486回复:5
pagelayout从mapcontrol中读取数据并打印输出
<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> |
|
1楼#
发布于:2006-06-09 15:41
查看帮助里的CopyFocusMap Sample
|
|
|
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> |
|
3楼#
发布于:2006-06-09 17:28
<P>忘记刷新了,呵呵,谢谢了哈</P>
<P>再次感谢你!</P> |
|
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> |
|
|
5楼#
发布于:2006-06-13 15:42
<img src="images/post/smile/dvbbs/em02.gif" />
|
|