天天看點

ArcGIS Engine中的Symbols詳解

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

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

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

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

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

ArcGIS Engine中的Symbols詳解

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

ArcGIS Engine中的Symbols詳解

       IMarkerSymbol接口提供了标記樣式共同擁有的一些屬性:Angle,Color,Size,XOffset,和YOffset。IMarkerSymbol是所有标記樣式的原始接口。所有的其他标記接口都繼承IMarkerSymbol的屬性和方法。這個接口有5個可讀可寫屬性,它們允許你在任何标記樣式類中擷取和設定基礎的屬性。Color屬性能夠被任何IColor類型的對象設定,它的具體影響基于你使用的類型。

       标記樣式類的顔色屬性設定屬性表如下:

ArcGIS Engine中的Symbols詳解

       Size屬性設定符号整體的高度,包含SimpleMarkerSymbol,CharacterMarkerSymbol,PictureMarkerSymbol和MultiLayerMarkerSymbol類型。對于ArrowMarkerSymbol類型,Size表示長度。基本機關是點。除了PictureMarkerSymbol的預設大小是12外,其他的預設的大小都是8。Angle屬性設定角度,機關是度。符号是從水準方向開始向逆時針方向進行旋轉。它的預設值是0。XOffset和YOffset屬性定義樣式繪制時離實際對象的偏移距離。兩個屬性都是在列印的點中,預設值是0,值可為正和負。負數表示相對于對象向下偏移和向右偏移,當然正數表示向上和向左偏移。Size、XOffset和YOffset在列印機點上1/71英寸大小。

       下面的圖展示了一些标記樣式:

ArcGIS Engine中的Symbols詳解

       标記符号的旋轉指定到數學表達中,下圖展示了标記符号的旋轉:

ArcGIS Engine中的Symbols詳解

       下圖展示了一些簡單的标記樣式:

ArcGIS Engine中的Symbols詳解

       下圖展示了一些箭頭标記樣式:

ArcGIS Engine中的Symbols詳解

       下圖展示了一些圖表标記樣式:

ArcGIS Engine中的Symbols詳解

       下圖展示了一些圖檔标記樣式:

ArcGIS Engine中的Symbols詳解

       下圖展示了一些多層标記樣式:

ArcGIS Engine中的Symbols詳解

       更多資訊,參見:

       線符号樣式的的類視圖如下圖所示:

ArcGIS Engine中的Symbols詳解

       LineSymbol接口擁有兩個所有線樣式共同擁有的屬性:Color和Width。ILineSymbol是線樣式共同的原始接口,将繼承ILineSymbol所有的屬性和方法。接口有兩個可讀可寫屬性,在所有的線樣式類中允許對其擷取和設定。Color屬性控制基礎線(它不是影響任何存在的裝飾線條,請參閱ILineProperties接口)的顔色并且可有任何IColor類型的對象設定。顔色線條除了SimpleLineSymbol預設被設定成中灰色,其他的都預設是黑色。Width屬性設定的是所有的線寬度,機關是點。對于HashLineSymbol,Width屬性設定的是所有哈西的長度。除了MarkerLineSymbol的預設寬度為8外,所有的線符号的預設寬度都是1。

       線符号表示了一個對象或圖形繪制的定義。Straight lines、polylines、curves和outlines都能用線符号進行繪制。下圖展示了一些線符号:

ArcGIS Engine中的Symbols詳解

       一個線符号被列印出來是1/72英寸。下圖展示了一個線符号寬度的樣例:

ArcGIS Engine中的Symbols詳解

       下圖展示了填充符号的類結構視圖:

ArcGIS Engine中的Symbols詳解

       下圖展示一些填充符号樣式:

ArcGIS Engine中的Symbols詳解

       IFillSymbol接口呈現了兩個屬性,Color和Outline,他們是所有填充符号類型都擁有的屬性。

在ArcOjbects中,IFillSymbol被所有的更專業的填充樣式類型所繼承,有兩個可讀可寫屬性。Color屬性控制這基本的填充,在下表所示,可以使用IColor類型進行設定。

ArcGIS Engine中的Symbols詳解

       Outline屬性在ILineSymbol中的設定,被繪制到填充的外邊框。不同的填充符号表達了一個多邊形的面積和邊框如何繪制。預設的外邊框線是一條SimpleLineSymbol實線,你也可以使用任何類型的線樣式作為外邊框線。外邊框線的中線在對象的邊沿上,是以,一個寬度為5的外框線将重疊填充符号可見的數量。

ArcGIS Engine中的Symbols詳解

       下圖展示了文字元号樣式的類視圖:

ArcGIS Engine中的Symbols詳解

       TextSymbol類提供了一種用來符号化圖形元素中的文字、注記、标注等等。文字元号樣式不僅僅隻是定義了字型。主要接口ITextSymbol、ISimpleTextSymbol和IFormattedTextSymbol控制這文字怎樣展現和單個字元的展現方式。TextSymbol支援擴充的ASCII碼。

       3DChartSymbol是一個抽象的三種類型的圖表符号。它代表了一種标記符号,可以使用ChartRenderer的多個屬性來符号化地理資料。雖然它被普遍應用于ChartRenderer,如果所有屬性都設定适當,你也可以使用符号作為标記符号符号化單個人對象或元素。

在圖表符号中IChartSymbol被用來計算柱子和餅圖檔的大小。maximum屬性值能被圖表用來量算其他屬性的值。在建立3DChartSymbol的時候該值總是被設定。當建立一個CharRenderer時,確定你的特征類已經統計完成,你可以統計統計功能設定MaxValue屬性到maxmun屬性值開始渲染。例如,加入有兩個字段用一個圖表來渲染,一個包含的值是從0至5,另一個包含的值是從0至10,設定最大值10。

       Value屬性包含一組值,訓示所有的柱狀的的高度和寬度或餅的份額。假如你在CharRenderer中使用ChartSymbol,你不需要設定這個屬性。這個值數組将在CharRenderer繪圖的過程中,FeatureClass類使用從指定的屬性字段的屬性值,從每個功能建立一個稍微不同的符号進行重複填充。繪制完成後所有的值被設定成空或0。單獨使用ChartRenderer時,在柱狀和餅子圖中設定你想要使用的數組值。

沒有整理與歸納的知識,一文不值!高度概括與梳理的知識,才是自己真正的知識與技能。 永遠不要讓自己的自由、好奇、充滿創造力的想法被現實的架構所束縛,讓創造力自由成長吧! 多花時間,關心他(她)人,正如别人所關心你的。理想的騰飛與實作,沒有别人的支援與幫助,是萬萬不能的。

    本文轉自wenglabs部落格園部落格,原文連結:http://www.cnblogs.com/arxive/p/8145595.html,如需轉載請自行聯系原作者

繼續閱讀