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;
}