gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
阅读:1086回复:1

在C#中应用MapObjects(图层标注)

楼主#
更多 发布于:2004-09-30 12:48
<P >在MO中自动标注需要利用LabelRenderer对象,一般标注过程中需要设置一个合适的字体,下面给出我实现的代码。</P>
<P > <p></p></P>
<P >实现代码:<p></p></P>
<P  align=left>//针对点图层效果良好<p></p></P>
<P  align=left>//获取需要标注的图层<p></p></P>
<P  align=left>MapObjects2.MapLayer lyr = (MapObjects2.MapLayer)axMap1.Layers.Item(0);//我使用的是世界地图,0层为城市<p></p></P>
<P  align=left>MapObjects2.LabelRenderer lb = new MapObjects2.LabelRendererClass();//创建标注对象<p></p></P>
<P  align=left>lb.Field = "Name";//自动标注来源的字段。我在地图中加入的图层是ESRI SharpFiles 格式,这个‘name’是dbf文件中的字段名<p></p></P>
<P  align=left>MapObjects2.TextSymbol sym = lb.get_Symbol(0);//定义sym用来设置字体<p></p></P>
<P  align=left>sym.Font.Name = "宋体";//设置字体<p></p></P>
<P  align=left>sym.Font.Bold = false;//粗体显示<p></p></P>
<P  align=left>sym.Color = (uint)MapObjects2.ColorConstants.moRed;//设置标注文字颜色<p></p></P>
<P  align=left>sym.Font.Size = 10;// ※设置字体大小<p></p></P>
<P  align=left>//sym.Height = 5000;<p></p></P>
<P  align=left>lb.AllowDuplicates = true;//允许重复<p></p></P>
<P >lyr.Renderer = lb;//将设置好的标注给当前图层<p></p></P>
<P > <p></p></P>
<P >上面的方法设置的字体不会随着地图的放大缩小而改变字体大小,实用性较高。当然我们也可以设置随地图放大缩小的标注,方法是注销上面的代码sym.Font.Size = 10;// ※设置字体大小<p></p></P>
<P >并取消下面的代码<p></p></P>
<P >//sym.Height = 5000; <p></p></P>
<P >的注释。</P>
喜欢0 评分0
GIS麦田守望者,期待与您交流。
berush
路人甲
路人甲
  • 注册日期2003-12-01
  • 发帖数158
  • QQ
  • 铜币622枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-09-30 15:25
最后还要调用axMap1.ctrlRefresh()刷新一下才能看到效果 <img src="images/post/smile/dvbbs/em01.gif" />
举报 回复(0) 喜欢(0)     评分
游客

返回顶部