阅读:2781回复:6
[求助]添加pagelayoutControl
<P>请教各位大侠:用什么方法下载一个已有的mxd到我的程序中(VB+engine),达到两个目的,1使pagelayoutcontrol与mapcontrol同步,即当mapcontrol中的内容变化后,pagelayoutcontrol也能与其保持一致;2在它们变化后,pagelayout原来的的图框比例尺等依然存在(程序所用mxd是事先在arcmap里配好的,带有图框图例比例尺等)。</P>
<P>哪位高人做过这种,指点一下哈</P><img src="images/post/smile/dvbbs/em12.gif" /> |
|
|
1楼#
发布于:2005-12-11 13:27
<P>让两个视图同步更新就行了吧,看看下面的函数,应该 有点用</P>
<P>Public Sub CopyAndOverwriteMap()</P> <P>Dim pObjectCopy As IObjectCopy<BR> Set pObjectCopy = New ObjectCopy<BR> <BR> Dim pToCopyMap As IUnknown<BR> Set pToCopyMap = MapControl1.ActiveView.FocusMap<BR> <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> If pToOverwriteMap Is Nothing Then<BR> Exit Sub<BR> End If<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 = MapControl1.ActiveView.Extent<BR> PageLayoutControl1.Refresh esriViewGeography<BR> <BR> <BR> PageLayoutControl1.ZoomToWholePage</P> <P>End Sub</P> |
|
|
2楼#
发布于:2005-12-15 17:55
先谢谢gis先生,可是用了这个方法后,再打开另一个mxd,mapsurround还是原来的,怎么办呢?
|
|
|
3楼#
发布于:2005-12-18 12:53
这种方法,应该是把mapctrl里的所有要素copy到本pagelayout里,是否否能实现只拷贝mapctrl的当前视窗范围或者是指定范围
|
|
4楼#
发布于:2005-12-20 20:30
<P>那么mapsurround怎么办?</P>
|
|
|
5楼#
发布于:2006-01-20 08:44
<P>有更好的办法:</P>
<P>使用 axMpaControl1.map = axPagelayoutControl1.Activeview.Focusmap</P> <P>但是必须保证当前只有一个Activeview is actived</P> |
|
6楼#
发布于:2006-07-04 15:44
<P><img src="images/post/smile/dvbbs/em02.gif" />...</P>
<P>有一個小問題。。。Annotation的資訊沒有跟過來。。PAGELAYOUT</P> <P>希望各位高手...相助!!</P> |
|