AE中pagelayout里绘制经纬网

来自:http://hi.baidu.com/chaisy/blog/item/ad639b584fafbed79c8204b9.html
AE中pagelayout里绘制经纬网

using System;
using System.Collections.Generic;
using System.Text;

using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.ADF.BaseClasses;
using ESRI.ArcGIS.ADF.CATIDs;
using ESRI.ArcGIS.esriSystem;
using System.Runtime.InteropServices;
using System.Drawing;

namespace TMM.MapSurrounds
{
/// <summary>
/// 向Pagelayout上添加格网
/// </summary>
public class AddGrid : BaseCommand
{

       /// <summary>
       ///   操作的对象
       /// </summary>
       private IPageLayoutControl3 _pageLayout;


       /// <summary>
       /// 构造函数 添加格网
       /// </summary>
       public AddGrid()
       {
         //设置一些属性
         base.m_caption = "添加格网";
         base.m_toolTip = "添加格网";
       }


       /// <summary>
       /// 创建
       /// </summary>
       /// <param name="hook">钩子</param>
       public override void OnCreate(object hook)
       {
         IToolbarControl2 myToolBar = (IToolbarControl2)hook;
         this._pageLayout = (IPageLayoutControl3)myToolBar.Buddy;
       }


       /// <summary>
       /// 鼠标点击按钮
       /// </summary>
       public override void OnClick()
       {
         this._pageLayout.MousePointer = esriControlsMousePointer.esriPointerHourglass;

         //创建一个经纬格网 并设置其相关属性
         IMapGrid myMapGrid;
         IMeasuredGrid myMeasuredGrid = new MeasuredGridClass();
         myMeasuredGrid.FixedOrigin = true;
         myMeasuredGrid.Units = this._pageLayout.ActiveView.FocusMap.MapUnits;
         myMeasuredGrid.XIntervalSize = 100;
         myMeasuredGrid.XOrigin = -300;
         myMeasuredGrid.YIntervalSize = 100;
         myMeasuredGrid.YOrigin = -300;
         myMapGrid = (IMapGrid)myMeasuredGrid;

         //设置投影属性
         IProjectedGrid myProjectedGrid = (IProjectedGrid)myMeasuredGrid;
         myProjectedGrid.SpatialReference = this._pageLayout.ActiveView.FocusMap.SpatialReference;
         myMapGrid.Name = "经纬格网";


         //创建边线并设置其属性
         ICalibratedMapGridBorder myMapGridBorder = new CalibratedMapGridBorderClass();
         IColor myColor=new RgbColorClass ();
         myColor.RGB = Convert.ToInt32(16711680);
         myMapGridBorder.BackgroundColor = myColor;
         myColor = new RgbColorClass();
         myColor.RGB = Convert.ToInt32(16711680);
         myMapGridBorder.ForegroundColor = myColor;
         myMapGridBorder.BorderWidth = 3;
         myMapGridBorder.Interval = 72;
         myMapGridBorder.Alternating = true;
         myMapGrid.Border =(IMapGridBorder) myMapGridBorder;

         //创建标签,并设置其属性
         IFormattedGridLabel myMapFormattedGridLabel = new FormattedGridLabelClass();
         IGridLabel myGridLabel = (IGridLabel)myMapFormattedGridLabel;
         stdole.StdFont myFont = new stdole.StdFontClass();
         myFont.Name = "Arial";
         myFont.Size = 16;
         myGridLabel.Font = (stdole .IFontDisp)myFont;
         myColor = new RgbColorClass();
         myColor.RGB = Convert.ToInt32(16711680);
         myGridLabel.LabelOffset = 2;
         myGridLabel.set_LabelAlignment(esriGridAxisEnum.esriGridAxisLeft, false);
         myGridLabel.set_LabelAlignment(esriGridAxisEnum.esriGridAxisRight, false);

         INumericFormat myNumericFormat = new NumericFormatClass();
         myNumericFormat.AlignmentOption = esriNumericAlignmentEnum.esriAlignRight;
         myNumericFormat.RoundingOption = esriRoundingOptionEnum.esriRoundNumberOfDecimals;
         myNumericFormat.RoundingValue = 2;
         myNumericFormat.ShowPlusSign = false;
         myNumericFormat.UseSeparator = true;
         myMapFormattedGridLabel.Format =(INumberFormat) myNumericFormat;

         myMapGrid.LabelFormat = myGridLabel;

         //添加mapGrid到版式视图
         IMapGrids myMapGrids = (IMapGrids)this._pageLayout.ActiveView.GraphicsContainer.FindFrame(this._pageLayout.ActiveView.FocusMap);

         myMapGrids.AddMapGrid(myMapGrid);

         this._pageLayout.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewBackground, null, null);

         this._pageLayout.MousePointer = esriControlsMousePointer.esriPointerArrow;

       }



   }
}

 
这是做一个命令按钮   在ToolBarControl加上就行
其实得到的结果是一个 数字为100等数字网格

posted @ 2012-09-14 14:43  叫我小艺  阅读(966)  评论(0编辑  收藏  举报
给我发邮件(wanganb@126.com)