基于C#的AE二次开发之地图标注

28 篇文章 16 订阅
24 篇文章 42 订阅

基于C#的AE二次开发之地图标注

我的开发环境为ArcGIS Engine 10.2与Visual studio2010。主地图名称为axMapControl1,创建一个菜单或按钮,创建一个点击事件,粘贴代码修改图层与标注字段即可实现。(注意相关事件的添加与动态链接库的引入)!
效果预览:
实现实现代码:

private void 标注要素ToolStripMenuItem_Click(object sender, EventArgs e)
{
     try
     {
         IMap pMap = axMapControl1.Map;
         //获得图层所有要素(在这里输入需要标注的矢量要素类,我这里默认第一个图层【高耦合】)
         IFeatureLayer pFeatureLayer = axMapControl1.get_Layer(0) as IFeatureLayer;
         IFeatureCursor pFeatCursor = pFeatureLayer.Search(null, true);
         IFeature pFeature = pFeatCursor.NextFeature();
         while (pFeature != null)
         {
             IFields pFields = pFeature.Fields;
             //找出标注字段的索引号(在这里填写标注字段名,我这里填的是FID字段)
             int index = pFields.FindField("FID");
             //得到要素的Envelope
             IEnvelope pEnve = pFeature.Extent;
             IPoint pPoint = new ESRI.ArcGIS.Geometry.Point();
             pPoint.PutCoords(pEnve.XMin + pEnve.Width / 2, pEnve.YMin + pEnve.Height / 2);
             //新建字体对象
             stdole.IFontDisp pFont;
             pFont = new stdole.StdFont() as stdole.IFontDisp;
             //标注字型为微软雅黑,可自行调整
             pFont.Name = "微软雅黑";
             //产生一个文本符号
             ITextSymbol pTextSymbol = new TextSymbol();
             //设置文本符号的大小
             pTextSymbol.Size = 20;
             pTextSymbol.Font = pFont;
             //标注字体的颜色为红色
             IRgbColor pColor = new RgbColor() as IRgbColor;
             pColor.Red = 255;
             pColor.Green = 0;
             pColor.Blue = 0;
             pTextSymbol.Color = pColor;
             //产生一个文本对象
             ITextElement pTextElement = new TextElement() as ITextElement;
             pTextElement.Text = pFeature.get_Value(index).ToString();
             pTextElement.ScaleText = true;
             pTextElement.Symbol = pTextSymbol;
             IElement pElement = pTextElement as IElement;
             pElement.Geometry = pPoint;
             IActiveView pActiveView = pMap as IActiveView;
             IGraphicsContainer pGraphicsContainer = pMap as IGraphicsContainer;
             //添加元素
             pGraphicsContainer.AddElement(pElement, 0);
             pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
             pPoint = null;
             pElement = null;
             pFeature = pFeatCursor.NextFeature();
         }
     }
     catch (Exception ex){
         MessageBox.Show("标注字段不存在!");
     }
 }
  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值