feifeiwua
路人甲
路人甲
  • 注册日期2004-09-19
  • 发帖数48
  • QQ
  • 铜币94枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:4390回复:13

[求助]地图拷贝到PageLayoutControl控件中,可以打印出地图,但是PageLayoutControl控件中地图不可见??

楼主#
更多 发布于:2005-06-02 17:26
<P>我在Form窗体上放置了一个PageLayoutControl控件,利用拷贝的方法将MapControl中的地图拷贝到PageLayoutControl控件中,打印是可以打出来结果,可是PageLayoutControl控件中是一片空白,希望有高手回答哦~~~</P>
<P>急哦~~~</P>
<P>拷贝代码如下:</P>
<P>Public Sub CopyAndOverwriteMap()<BR><BR>    Dim pObjectCopy As IObjectCopy<BR>    Set pObjectCopy = New ObjectCopy<BR>    <BR>    Dim pToCopyMap As IUnknown<BR>    Set pToCopyMap = m_pHookHelper.ActiveView.FocusMap<BR>    <BR>    Dim pCopiedMap As IUnknown<BR>    Set pCopiedMap = pObjectCopy.Copy(pToCopyMap)<BR>    <BR>    Dim pToOverwriteMap As IUnknown<BR>    Set pToOverwriteMap = Me.PageLayoutControl1.ActiveView.FocusMap<BR>    <BR>    pObjectCopy.Overwrite pCopiedMap, pToOverwriteMap<BR>    <BR>    Dim m_pMapFrame As IMapFrame<BR>    Set m_pMapFrame = PageLayoutControl1.GraphicsContainer.FindFrame(PageLayoutControl1.ActiveView.FocusMap)<BR>    m_pMapFrame.ExtentType = esriExtentScale<BR>    <BR>    PageLayoutControl1.Page.IsPrintableAreaVisible = True</P>
<P>    PageLayoutControl1.ActiveView.Extent = m_pHookHelper.ActiveView.Extent<BR>    PageLayoutControl1.Refresh </P>
<P>End Sub</P>


喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2005-06-02 18:04
<P><BR>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>
举报 回复(0) 喜欢(0)     评分
feifeiwua
路人甲
路人甲
  • 注册日期2004-09-19
  • 发帖数48
  • QQ
  • 铜币94枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-06-02 18:47
<P>Public Sub CopyAndOverwriteMap()<BR></P>
<P>    Dim i As Integer<BR>    <BR>    For i = 0 To m_pHookHelper.FocusMap.LayerCount - 1<BR>        PageLayoutControl1.ActiveView.FocusMap.AddLayer m_pHookHelper.FocusMap.Layer(i)<BR>    Next i<BR>    Dim pObjectCopy As IObjectCopy<BR>    Set pObjectCopy = New ObjectCopy<BR>    <BR>    Dim pToCopyMap As IUnknown<BR>    Set pToCopyMap = m_pHookHelper.ActiveView.FocusMap<BR>    <BR>    Dim pCopiedMap As IUnknown<BR>    Set pCopiedMap = pObjectCopy.Copy(pToCopyMap)<BR>    <BR>    Dim pToOverwriteMap As IUnknown<BR>    Set pToOverwriteMap = Me.PageLayoutControl1.ActiveView.FocusMap<BR>    <BR>    pObjectCopy.Overwrite pCopiedMap, pToOverwriteMap</P>
<P>    PageLayoutControl1.ActiveView.Extent = m_pHookHelper.ActiveView.Extent<BR>    PageLayoutControl1.Refresh esriViewGraphics</P>
<P>End Sub</P>
<P>还是一片空白阿???</P>
举报 回复(0) 喜欢(0)     评分
feifeiwua
路人甲
路人甲
  • 注册日期2004-09-19
  • 发帖数48
  • QQ
  • 铜币94枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2005-06-02 18:50
<P>我把这一句</P>
<P>PageLayoutControl1.ActiveView.Extent = m_pHookHelper.ActiveView.Extent</P>
<P>改为:</P>
<P>PageLayoutControl1.Extent = m_pHookHelper.ActiveView.Extent.Extent </P>
<P>还照样是一片空白</P>
<P>为什么???<BR></P>
举报 回复(0) 喜欢(0)     评分
木白林
路人甲
路人甲
  • 注册日期2004-03-19
  • 发帖数319
  • QQ
  • 铜币824枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2005-06-02 21:08
关注一下
心情卡片 一起分享...
举报 回复(0) 喜欢(0)     评分
feifeiwua
路人甲
路人甲
  • 注册日期2004-09-19
  • 发帖数48
  • QQ
  • 铜币94枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2005-06-03 09:51
<P>怎么还是没人解决呢???</P>
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
6楼#
发布于:2005-06-03 10:52
<P>我发的代码里的 m_pPMap</P>
<P>是定义成imap的</P>
<P>注意你的定义哦</P>
举报 回复(0) 喜欢(0)     评分
feifeiwua
路人甲
路人甲
  • 注册日期2004-09-19
  • 发帖数48
  • QQ
  • 铜币94枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2005-06-03 11:57
<P>Private m_pMap As IMap</P>
<P>Set m_pMap = m_pHookHelper.FocusMap</P>
<P>    For i = 0 To m_pMap.LayerCount - 1<BR>         PageLayoutControl1.ActiveView.FocusMap.AddLayer m_pMap.Layer(i)<BR>    Next i</P>
<P>可是还是一片空白???</P>
<P>能否发一个可以运行的例子看看呢?</P>
<P>要不,加我QQ:30196769</P>
<P>还请您多帮忙哦~~~</P>
举报 回复(0) 喜欢(0)     评分
feifeiwua
路人甲
路人甲
  • 注册日期2004-09-19
  • 发帖数48
  • QQ
  • 铜币94枚
  • 威望0点
  • 贡献值0点
  • 银元0个
8楼#
发布于:2005-06-03 13:37
<P>这边怎么不能上传?</P>
举报 回复(0) 喜欢(0)     评分
roamer
路人甲
路人甲
  • 注册日期2003-11-19
  • 发帖数25
  • QQ
  • 铜币221枚
  • 威望0点
  • 贡献值0点
  • 银元0个
9楼#
发布于:2005-06-03 15:49
看看是不是这个问题?
<P>我认为你的问题在这里,因为你在PageLayoutControl1上没有一个 mapframe,试试增加一个mapframe看看,我也不知道如何通过代码加,但是通过工具加了一个mapframe后好像就行了,</P>
<P>Dim m_pMapFrame As IMapFrame<BR>    Set m_pMapFrame = PageLayoutControl1.GraphicsContainer.FindFrame(PageLayoutControl1.ActiveView.FocusMap)<BR>    m_pMapFrame.ExtentType = esriExtentScale</P>
<P><BR><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em08.gif" /></P>
举报 回复(0) 喜欢(0)     评分
上一页
游客

返回顶部