ArcGis 制图——图框整饰的插件式实现(一)C#

直接进入主题,正文中写起来会对一些关键词用英文补充说明一下,这可不是作者在显摆,了解下功能的英文表述对查询帮助、写出代码是很有帮助的。

写完了自己瞅了一眼都不想看,希望有需要的你能看懂。


ArcMap数据框有两个视图,“数据视图”(DataView)与“布局视图”(LayoutView),ArcMap里制图是在“布局视图”里操作,在ArcObject里它是“PageLayout”对象。
如下图,地图图框整饰的几个基本元素有图框(Frame)、标题(Title)、比例尺(Scale)、图例(Legend)、指北针(NorthArrow)、其他辅助要素(底部文字等)。

图框:

其实图框细分应该会有内图框、外图框。内图框是MapFrame的边框,MapFrame是存放map图层要素(layers)的地方,直接切换到“布局视图”就可以看到它。外图框可以是MapFrame的Envelpoe外扩一定距离形成一个OuterEnvelpoe,将OuterEnvelpoe边框(Boder)的线型、宽度设置一下就做出外来了。

另外,内框MapFrame与PageLayout.Page的距离(边距,上、下、侧)需要给定。



标题

它就是根据MapFrame的Envelpoe与PageLayout的Page的宽度(width)与高度(height)确定一个位于MapFrame上方且居中的EnvelpoeTitle。创建一个TextElementClass,设置其样式,然后将其放到EnvelpoeTitle那儿就可以了。
底部文字

也是是根据MapFrame的Envelpoe与PageLayout的Page的相对位置,分别确定出位于MapFrame左下角、右下角的两个Envelpoe,然后创建两个TextElementClass,设置其样式,分别塞到Envelpoe。

比例尺、图例、指北针是MapFrame的MapSurround,比例尺、图例是明显的与MapFrame相关,是随图层信息动态变化的。
比例尺:采用文本型比例尺,uid.Value = "esriCarto.ScaleText"。也是根据MapFrame的Envelpoe与PageLayout的Page的相对位置确定其放置的。
图例:uid.Value = "esriCarto.Legend"。根据MapFrame的Envelpoe确定其位置。
指北针: uid.Value = "esriCarto.MarkerNorthArrow"。根据MapFrame的Envelpoe确定其位置。其实质是一个字形,“运行”——输入“charmap”可以打开“字符映射表”,选择ESRI North字体,选择对应的字形可以看到其16进制的CharacterIndex,使用科学计算器计算出10进制的值就可以在程序中使用了。


猜你喜欢

转载自www.cnblogs.com/yzhyingcool/p/10065605.html