ArcObjects SDK開發 012 PageLayout和Page

1、從ArcMap角度看結構

一個Mxd文件包含一個PageLayout對象和一個多多個Map對象,每個Map會被包成MapFrame,添加到PageLayout中。我們用ArcMap打開一個mxd文件,在佈局模式下看PageLayout都包含了什麼。

image1.png

PageLayout包含的內容以及內容之間的關係較爲複雜,整體上可以分爲兩個部分,Page和Elment。Elment又包含3類,MapFrame、MapSurroundFrame和普通的Element。每個MapFrame都會加載一個Map,並可以設置網格(MapGrid),每個MapSurroundFrame都對應一個MapFrame。看起來比較複雜,我們對應一下實際的東西就容易理解了。

MapFrame,翻譯過來就是地圖容器,Map會放到MapFrame後添加到PageLayout中。地圖文檔有幾個Map,PageLayout中就會有幾個MapFrame。MapSurroundFrame是MapSurround的容器,繼承IMapSurround的對象有指北針、比例尺以及圖例等。這些對象都和Map密切相關。所以每個MapSurroundFrame都會關聯一個MapFrame,不然MapSurroundFrame中的MapSurround對象就不知道該如何渲染了。

2、從SDK的角度看

如果從ArcMap上看感覺亂糟糟的,那麼從SDK的角度看會清晰很多。

image2.png

PageLayout包含兩個最重要的內容,一是繼承實現了IPageLayout接口,定義了Page屬性,Page較爲簡單。第二是繼承實現了IGraphicsContainer接口,這樣就可以在PageLayout上面加載和顯示Element。

在繼承IElement接口的類中,有兩個特殊的類,MapFarme和MapSurroundFrame。MapFarme是Map的載體,Map通過MapFarme加載顯示到了PageLayout上。MapSurroundFrame爲和地圖相關的圖飾對象的載體,例如指北針、比例尺、圖例等,這些對象都繼承了IMapSurround接口,通過MapSurroundFrame加載顯示到PageLayout上。每個MapSurroundFrame都對應一個MapFarme,從而確定加載的指北針、比例尺是針對哪個地圖的。

MapFarme有一個比較重要的屬性MapGrids,可以管理多種針對MapFrame的各種格網,例如經緯網、公里網等。

3、Page

Page對象可通過IPageLayout的Page屬性獲得,爲IPage接口類型。Page翻譯過來就是紙張的意思,其意義也是如此,標識我們要出的圖要繪製在多大的紙張上。我們打開ArcMap,在沒加載任何地圖的情況下,系統會創建一個空地圖。切換到佈局視圖下,最外面的黑色邊框即爲Page的範圍。如下圖所示。

image3.png

處於選中狀態的綠色虛線是MapFrame,當前加載的地圖沒有任何圖層。其外面的黑色實線是Page的邊界,我們出圖的時候,只能出位於Page範圍內的元素。Page默認單位是釐米,也可以設置爲毫米或者英寸。Page默認是A4紙大小,其大小是可以設置的。Page左下角爲0,0點,向右爲X軸正方向,向上爲Y軸正方向。

Page可設置的屬性信息不多,我們可以參考下ArcObject SDK幫助中IPage的定義來看Page可以設置哪些信息。

image4.png

從幫助上看,大概可以設置Page的邊框、背景、大小以及單位等信息。我們平常使用的主要還是設置大小和單位。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章