1. 程式人生 > >ArcGis 製圖——圖框整飾的外掛式實現(一)C#

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進位制的值就可以在程式中使用了。