zoukankan      html  css  js  c++  java
  • backup3

            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);
    change_layout
  • 相关阅读:
    函数对象中的prototype属性
    undefined和null的区别
    访问修饰符
    继承
    静态成员和实例成员的区别
    js模拟Trim()方法
    连接池的执行原理
    Javascript中的= =(等于)与= = =(全等于)区别
    数据库中创建约束
    KM算法入门
  • 原文地址:https://www.cnblogs.com/yansc/p/6214602.html
Copyright © 2011-2022 走看看