![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
private void changLayoutTemp2(IActiveView activeView, IPageLayout pageLayout, IPageLayout pTempPageLayout) { IPage pTempPage = pTempPageLayout.Page; //set page size and units IPage pCurPage = pageLayout.Page; pCurPage.Units = pTempPage.Units; pCurPage.Orientation = pTempPage.Orientation; double dWidth, dHeight; pTempPage.QuerySize(out dWidth, out dHeight); pCurPage.PutCustomSize(dWidth, dHeight); //delet all the element in GraphicsContainer except the MapFrame IGraphicsContainer pGraphicsContainer = activeView.GraphicsContainer; IMap pMap = activeView.FocusMap; //现有的mxd文档 IMapFrame pMapFrame = pGraphicsContainer.FindFrame(pMap) as IMapFrame; pGraphicsContainer.Reset(); IElement pElement = pGraphicsContainer.Next(); while (pElement != null) { if (pElement is IMapFrame) { //模板的 IMapFrame pTempMapFrame = (pTempPageLayout as IGraphicsContainer).FindFrame((pTempPageLayout as IActiveView).FocusMap) as IMapFrame; IElement pTempElement = pTempMapFrame as IElement; pElement.Geometry = pTempElement.Geometry; pMapFrame.Border = pTempMapFrame.Border; //方里网 IMapGrids pMapGrids = pMapFrame as IMapGrids; pMapGrids.ClearMapGrids(); IMapGrids tempGrids = pTempMapFrame as IMapGrids; for (int i = 0; i < tempGrids.MapGridCount; i++) { pMapGrids.AddMapGrid(tempGrids.get_MapGrid(i)); } } //else //{ // pGraphicsContainer.DeleteElement(pElement); //} pElement = pGraphicsContainer.Next(); } //add element in the template to your cuurent pagelayout IGraphicsContainer pTempGraCon = pTempPageLayout as IGraphicsContainer; pTempGraCon.Reset(); pElement = pTempGraCon.Next(); while (pElement != null) { if (pElement is IMapFrame) { pElement = pTempGraCon.Next(); continue; } else if (pElement is IMapSurroundFrame) { IMapSurroundFrame pTempMapSurroundFrame = pElement as IMapSurroundFrame; pTempMapSurroundFrame.MapFrame = pMapFrame; IMapSurround pTempMapSurround = pTempMapSurroundFrame.MapSurround; pMap.AddMapSurround(pTempMapSurround); pGraphicsContainer.AddElement(pTempMapSurroundFrame as IElement, 0); } else { pGraphicsContainer.AddElement(pElement, 0); } pElement = pTempGraCon.Next(); } } /// <summary> /// 为PageLayout对象添加经纬网格 /// </summary> /// <param name="pPageLayout"></param> /// private void CreateGraticuleMapGrid(IPageLayout pPageLayout) { //获取MapFrame对象 IActiveView pAcitiveView = pPageLayout as IActiveView; IMap pMap = pAcitiveView.FocusMap; IGraphicsContainer pGraphicsContainer = pAcitiveView as IGraphicsContainer; IMapFrame pMapFrame = pGraphicsContainer.FindFrame(pMap) as IMapFrame; IRgbColor rgbColor = new RgbColor(); IMapGrids pMapGrids; IMapGrid pMapGrid; //Create the grid pMapGrid = new GraticuleClass();// (IGraticule)pServerContext.CreateObject("esriCarto.Graticule"); pMapGrid.Name = "Map Grid"; rgbColor.Red = 166; rgbColor.Green = 187; rgbColor.Blue = 208; IColor color = rgbColor as IColor; //Set the line symbol used to draw the grid ICartographicLineSymbol pLineSymbol; pLineSymbol = new CartographicLineSymbolClass(); //pLineSymbol = (ICartographicLineSymbol)pServerContext.CreateObject("esriDisplay.CartographicLineSymbol"); pLineSymbol.Cap = esriLineCapStyle.esriLCSButt; pLineSymbol.Width = 1; pLineSymbol.Color = color; pMapGrid.LineSymbol = pLineSymbol; pMapGrid.Border = null; // clear the default border; //Set the Tick Properties pMapGrid.TickLength = 15; pLineSymbol = new CartographicLineSymbolClass(); //pLineSymbol = (ICartographicLineSymbol)pServerContext.CreateObject("esriDisplay.CartographicLineSymbol"); pLineSymbol.Cap = esriLineCapStyle.esriLCSButt; pLineSymbol.Width = 1; pLineSymbol.Color = color; pMapGrid.TickLineSymbol = pLineSymbol; pMapGrid.TickMarkSymbol = null; //clear the default pMapGrid.LabelFormat.Font.Size = 20; //Set the Sub Tick Properties pMapGrid.SubTickCount = 5; pMapGrid.SubTickLength = 10; pLineSymbol = new CartographicLineSymbolClass(); //pLineSymbol = (ICartographicLineSymbol)pServerContext.CreateObject("esriDisplay.CartographicLineSymbol"); pLineSymbol.Cap = esriLineCapStyle.esriLCSButt; pLineSymbol.Width = 0.1; pLineSymbol.Color = color; pMapGrid.SubTickLineSymbol = pLineSymbol; //Marshal.ReleaseComObject(pLineSymbol); //Set the Grid labels properties IGridLabel pGridLabel; pGridLabel = pMapGrid.LabelFormat; pGridLabel.LabelOffset = 15; stdole.StdFont pFont = new stdole.StdFont(); pFont.Name = "Arial"; pFont.Size = 16; pMapGrid.LabelFormat.Font = pFont as stdole.IFontDisp; //Set the Tick, SubTick, Label Visibility along the 4 sides of the grid pMapGrid.SetTickVisibility(true, true, true, true); pMapGrid.SetSubTickVisibility(true, true, true, true); pMapGrid.SetLabelVisibility(true, true, true, true); //Make map grid visible, so it gets drawn when Active View is updated pMapGrid.Visible = true; //Set the IMeasuredGrid properties IMeasuredGrid pMeasuredGrid; pMeasuredGrid = pMapGrid as IMeasuredGrid; pMeasuredGrid.FixedOrigin = true; pMeasuredGrid.XIntervalSize = 0.5; //meridian interval pMeasuredGrid.XOrigin = 109; //shift grid 5 pMeasuredGrid.YIntervalSize = 0.5; //parallel interval pMeasuredGrid.YOrigin = 40; //shift grid 5 // add mapg grid to Layout and refresh pMapGrids = pMapFrame as IMapGrids; pMapGrids.AddMapGrid(pMapGrid); } string aaa = @"C:UsersAdministratorDesktopbbbbbb.mxd"; IMapDocument pMapDocument = new MapDocumentClass(); pMapDocument.Open(aaa); string file = @"C:UsersAdministratorDesktopA90_90.mxt"; IMapDocument pMapDocument2 = new MapDocumentClass(); pMapDocument2.Open(file);//template's path changLayoutTemp2(pMapDocument.ActiveView, pMapDocument.PageLayout, pMapDocument2.PageLayout); pMapDocument.SaveAs("d:\aa7.mxd", true, true);