ArcGIS Engine 修改 PageLayout 中地圖比例尺時出現的Bug解決辦法
阿新 • • 發佈:2019-02-09
原文地址:https://gis.stackexchange.com/questions/9943/mapscale-not-being-persisted-properly-in-mxd-when-programmatically-changed-outsi?answertab=votes#tab-top
當想要修改 PageLayout 中的地圖的比例尺時,一般都會想到修改 IMap 的 MapScale 屬性。確實在 ArcMap 的控制元件中修改是可以生效的,但是在 AE 中修改時卻不會生效。答主提出的辦法有效的解決了這個問題。
[DllImport("User32.dll")] public static extern int GetDesktopWindow(); private IMapDocument mapDocument = null; private void ChangeMapScale() { mapDocument.Open(@"C:\Temp\foo.mxd", null); IPageLayout pageLayout = mapDocument.PageLayout; IActiveView activeView = (IActiveView)pageLayout; IMap map = activeView.FocusMap; activeView = (IActiveView)mapDocument.PageLayout; activeView.Activate(GetDesktopWindow()); // 注意,呼叫了這個函式,才使得設定 MapScale 生效 map.MapScale = value; activeView.Refresh(); mapDocument.Save(true, true); }