1. 程式人生 > >ArcGIS Engine中的Symbols詳解

ArcGIS Engine中的Symbols詳解

fse 官方 基於 情況下 family eve cap 單個字符 默認值

轉自原文 ArcGIS Engine中的Symbols詳解

本文由本人翻譯ESRI官方幫助文檔。尊重勞動成果,轉載請註明來源。

Symbols

ArcObjects用了三種類型的Symbol(符號樣式)來繪制圖形特征:marker symbols(標記符號),line symbols(線符號),和fill symbols(填充符號)。這些樣式同樣可以用來繪制elements(元素)圖形,比如在地圖或制版視圖上的圖表邊線和指北針箭頭。第四個樣式text symbol(文字符號)是用來繪制標註和其他文本要素的。第五個樣式3D chart symbol(圖表樣式)是用來繪制圖表的。在圖形元素設置的實例中,一種樣式被作為屬性賦給所有的元素。圖層然而由一個包含一個或多個樣式的結合進行繪制。樣式(符號)的大小總是指定到一些點上(比如線的寬度),但是幾何形狀(如線的路徑)的大小是由它們本身來決定繪制的。多數情況下,當對象被創建時就已經有了一個默認的樣式,因此省去了創建新樣式賦給每一個對象的過程,你可以修改一個已經存在的樣式。另外一種方式獲取樣式的方式是用樣式文件。ArcObject使用樣式文件,可分發數據庫存儲和訪問樣式和顏色。有許標準樣式,提供了上千種預定義的可用的樣式,在安裝路徑下。利用StyleGallery和StyleGalleryItem兩個類,你可以彌補和修改現存的符號樣式,這可以使得比重新繪制和創建更高效。你同樣可以使用ArcMap的標準樣式編輯器,它可以在程序裏面使用SymbolEditor類打開。下面的小節將描述怎樣利用第一個規則創建一個復雜的符號樣式。ISymbol接口提供了對所有符號樣式的高等級功能,它允許你使用設置直接繪制一個符號樣式。

更多的附加信息,參見Creating custom symbols

Symbol level drawing

你可以使用符號等級繪圖功能改變圖層對象的繪制順序。在使用符號等級繪制時,你可以控制到是元素按照最基礎的一個個樣式順序繪制。這將意味著元素不一定需要以與圖層出現在ArcMap表的內容中相同的順序繪制。使用符號等級繪制,你可以控制一個含控制器繪制元素符號繪制元素的繪制。更多的是,當使用多個樣式符號時,你可以控制單個符號層的繪制順序。

符號等級繪制在地圖套管中最有用。因為它能被用來創建天橋和和地下通道,當線對象有穿過狀態時,它是一個非常好的方式展現連接狀態。符號等級繪制能夠用來更好地表達其他更多的影響和狀況。

Join and merge

下面的圖形展示了一個合並樣式的效果,它使得對象擁有一致的樣式相互連接起來。合並使得有不同樣式的對象連接顯示。這些變化在使用符號等級對象和接口後場景顯示在後臺自動實現效果。你可以使用,相對於圖層的ISymbolLevels.UseSymbolLevels或相對整個地圖的IMp.UserSymbolLevels接口,來切換符號等級繪制的開關。

使用了地圖等級符號繪制的兩個示例:

技術分享圖片

更多信息,參見:How to use symbol level drawing


Marker symbols

下面的圖表展示的是標記符號樣式的類結構:

技術分享圖片
IMarkerSymbol接口提供了標記樣式共同擁有的一些屬性:Angle,Color,Size,XOffset,和YOffset。IMarkerSymbol是所有標記樣式的原始接口。所有的其他標記接口都繼承IMarkerSymbol的屬性和方法。這個接口有5個可讀可寫屬性,它們允許你在任何標記樣式類中獲取和設置基礎的屬性。Color屬性能夠被任何IColor類型的對象設置,它的具體影響基於你使用的類型。
標記樣式類的顏色屬性設置屬性表如下:
技術分享圖片
Size屬性設置符號整體的高度,包含SimpleMarkerSymbol,CharacterMarkerSymbol,PictureMarkerSymbol和MultiLayerMarkerSymbol類型。對於ArrowMarkerSymbol類型,Size表示長度。基本單位是點。除了PictureMarkerSymbol的默認大小是12外,其他的默認的大小都是8。Angle屬性設置角度,單位是度。符號是從水平方向開始向逆時針方向進行旋轉。它的默認值是0。XOffset和YOffset屬性定義樣式繪制時離實際對象的偏移距離。兩個屬性都是在打印的點中,默認值是0,值可為正和負。負數表示相對於對象向下偏移和向右偏移,當然正數表示向上和向左偏移。Size、XOffset和YOffset在打印機點上1/71英寸大小。
下面的圖展示了一些標記樣式:
技術分享圖片
標記符號的旋轉指定到數學表達中,下圖展示了標記符號的旋轉:
技術分享圖片
下圖展示了一些簡單的標記樣式:
技術分享圖片
下圖展示了一些箭頭標記樣式:
技術分享圖片
下圖展示了一些圖表標記樣式:
技術分享圖片
下圖展示了一些圖片標記樣式:
技術分享圖片
下圖展示了一些多層標記樣式:
技術分享圖片
更多信息,參見:

How to make a character marker symbol How to make a picture marker symbol


Line symbols

線符號樣式的的類視圖如下圖所示: 技術分享圖片
LineSymbol接口擁有兩個所有線樣式共同擁有的屬性:Color和Width。ILineSymbol是線樣式共同的原始接口,將繼承ILineSymbol所有的屬性和方法。接口有兩個可讀可寫屬性,在所有的線樣式類中允許對其獲取和設置。Color屬性控制基礎線(它不是影響任何存在的裝飾線條,請參閱ILineProperties接口)的顏色並且可有任何IColor類型的對象設置。顏色線條除了SimpleLineSymbol默認被設置成中灰色,其他的都默認是黑色。Width屬性設置的是所有的線寬度,單位是點。對於HashLineSymbol,Width屬性設置的是所有哈西的長度。除了MarkerLineSymbol的默認寬度為8外,所有的線符號的默認寬度都是1。 線符號表示了一個對象或圖形繪制的定義。Straight lines、polylines、curves和outlines都能用線符號進行繪制。下圖展示了一些線符號: 技術分享圖片
一個線符號被打印出來是1/72英寸。下圖展示了一個線符號寬度的樣例: 技術分享圖片
更多信息,參見:How to make a cartographic line symbol

Fill symbols

下圖展示了填充符號的類結構視圖:
技術分享圖片
下圖展示一些填充符號樣式:
技術分享圖片
IFillSymbol接口呈現了兩個屬性,Color和Outline,他們是所有填充符號類型都擁有的屬性。
在ArcOjbects中,IFillSymbol被所有的更專業的填充樣式類型所繼承,有兩個可讀可寫屬性。Color屬性控制這基本的填充,在下表所示,可以使用IColor類型進行設置。
技術分享圖片
Outline屬性在ILineSymbol中的設置,被繪制到填充的外邊框。不同的填充符號表達了一個多邊形的面積和邊框如何繪制。默認的外邊框線是一條SimpleLineSymbol實線,你也可以使用任何類型的線樣式作為外邊框線。外邊框線的中線在對象的邊沿上,所以,一個寬度為5的外框線將重疊填充符號可見的數量。
技術分享圖片
更多信息,參見:

How to make a line fill symbol How to make a gradient fill symbol

Text symbols

下圖展示了文字符號樣式的類視圖:
技術分享圖片
TextSymbol類提供了一種用來符號化圖形元素中的文字、註記、標註等等。文字符號樣式不僅僅只是定義了字體。主要接口ITextSymbol、ISimpleTextSymbol和IFormattedTextSymbol控制這文字怎樣展現和單個字符的展現方式。TextSymbol支持擴展的ASCII碼。
更多信息,參見:

Creating other kinds of custom symbols How to make a line callout


Chart symbols

3DChartSymbol是一個抽象的三種類型的圖表符號。它代表了一種標記符號,可以使用ChartRenderer的多個屬性來符號化地理數據。雖然它被普遍應用於ChartRenderer,如果所有屬性都設置適當,你也可以使用符號作為標記符號符號化單個人對象或元素。
在圖表符號中IChartSymbol被用來計算柱子和餅圖片的大小。maximum屬性值能被圖表用來量算其他屬性的值。在創建3DChartSymbol的時候該值總是被設置。當創建一個CharRenderer時,確保你的特征類已經統計完成,你可以統計統計功能設置MaxValue屬性到maxmun屬性值開始渲染。例如,加入有兩個字段用一個圖表來渲染,一個包含的值是從0至5,另一個包含的值是從0至10,設置最大值10。
Value屬性包含一組值,指示所有的柱狀的的高度和寬度或餅的份額。假如你在CharRenderer中使用ChartSymbol,你不需要設置這個屬性。這個值數組將在CharRenderer繪圖的過程中,FeatureClass類使用從指定的屬性字段的屬性值,從每個功能創建一個稍微不同的符號進行重復填充。繪制完成後所有的值被設置成空或0。單獨使用ChartRenderer時,在柱狀和餅子圖中設置你想要使用的數組值。
更多信息,參見:
Creating custom symbols

Creating other kinds of custom symbols

Sample: Triangle graphic element

ArcGIS Engine中的Symbols詳解