IMapGrid/IIndexGrid/IMesureGrid使用方法及MapGridBorder的使用

 

        //索引网格
        private void button1_Click(object sender, EventArgs e)
        {
            IIndexGrid pIndexGrid = new IndexGridClass();
            pIndexGrid.ColumnCount = 6;
            pIndexGrid.RowCount = 6;
            for (int i = 0; i < pIndexGrid.ColumnCount - 1;i++ )
            {
                pIndexGrid.set_XLabel(i, (i + 1).ToString());
            }
            for (int i=0;i <pIndexGrid.RowCount-1;i++)
            {
                pIndexGrid.set_YLabel(i,i.ToString()+"A");
            }
            IActiveView pActiveView=axPageLayoutControl1.PageLayout as IActiveView;
            IMap pMap = pActiveView.FocusMap;
            IMapGrid pMapGrid=pIndexGrid as IMapGrid;
            pMapGrid.Name = "IndexGrid";
            IGraphicsContainer pGraphicsContainer = pActiveView as IGraphicsContainer;
            IMapFrame pMapFrame=pGraphicsContainer.FindFrame(pMap) as IMapFrame;
            IMapGrids pMapGrids = pMapFrame as IMapGrids;
            pMapGrids.ClearMapGrids();
            pMapGrids.AddMapGrid(pMapGrid);
            pActiveView.PartialRefresh(esriViewDrawPhase.esriViewBackground, null, null);
           
        }
        //添加经纬度网格
        private void button2_Click(object sender, EventArgs e)
        {
            IActiveView pActiveView = axPageLayoutControl1.PageLayout as IActiveView;
            IMap pMap = pActiveView.FocusMap;
            IMapGrid pMapGrid;
            IMeasuredGrid pMeasureGrid=new MeasuredGridClass();
            pMeasureGrid.FixedOrigin = true;
            //measureGrid的单格经纬度大小,根据自己地图大小调整
            pMeasureGrid.XIntervalSize = 0.1;
            pMeasureGrid.YIntervalSize = 0.1;
            pMeasureGrid.XOrigin=(axPageLayoutControl1.FullExtent.XMax - axPageLayoutControl1.FullExtent.XMin) / 2 + axPageLayoutControl1.FullExtent.XMin;
            pMeasureGrid.YOrigin = (axPageLayoutControl1.FullExtent.YMax - axPageLayoutControl1.FullExtent.YMin) / 2 + axPageLayoutControl1.FullExtent.YMin;
            pMapGrid = pMeasureGrid as IMapGrid;
            pMapGrid.Name = "经纬度网格";
            IGraphicsContainer pGraphicsContainer = pActiveView as IGraphicsContainer;
            IMapFrame pMapFrame = pGraphicsContainer.FindFrame(pMap) as IMapFrame;
            IMapGrids pMapGrids = pMapFrame as IMapGrids;
            pMapGrids.ClearMapGrids();
            pMapGrids.AddMapGrid(pMapGrid);
            pActiveView.PartialRefresh(esriViewDrawPhase.esriViewBackground, null, null);
        }

上面是使用了Border的效果

在上面代码的pMapGrids.add();之后加一句pMapGrid.Border = CreateSimpleMapGridBorder() as IMapGridBorder;

添加下面的函数:

        private ISimpleMapGridBorder CreateSimpleMapGridBorder()
        {
            ISimpleMapGridBorder pSimpleMapGridBorder = new SimpleMapGridBorderClass();
            ISimpleLineSymbol pSimpleLineSymbol = new SimpleLineSymbolClass();
            pSimpleLineSymbol.Style = esriSimpleLineStyle.esriSLSSolid;
            pSimpleLineSymbol.Color = getRGB(0, 0, 255);
            pSimpleLineSymbol.Width = 10;
            pSimpleMapGridBorder.LineSymbol = pSimpleLineSymbol;
            return pSimpleMapGridBorder;
        }
        private IRgbColor getRGB(int r, int g, int b)
        {
            IRgbColor pColor = new RgbColorClass();
            pColor.Red = r;
            pColor.Green = g;
            pColor.Blue = b;
            return pColor;
        }

posted on 2012-03-13 19:36  种瓜得瓜  阅读(613)  评论(0编辑  收藏  举报