天天看點

讀取Style符号庫樣式的方法

以前進行符化的時候一般都是自定義Symbol,或者使用SymbologyControl進行選擇,由于實際需要,我們來讀取一下樣式管理器中的樣式。在ArcMap中打開如下:style下有很多樣式類,每個類下面有各種樣式。

讀取Style符号庫樣式的方法

讀取Style符号庫樣式的步驟如下:

第二步,建立樣式管理集工具StyleGallery,并指定樣式檔案位置;

第三步,周遊擷取樣式檔案類,即樣式管理器ESRI.Style下的22個類,這裡我們要擷取名稱為"Fill Symbols";

第四步,周遊樣式檔案類下名為"10% Simple hatch"樣式檔案,并傳回為Symbol。

第五步,符号化要素圖層:将Symbol賦給SimpleRenderer的Symbol屬性,将圖層轉為GeoFeatureLayer,将SimpleRenderer賦給GeoFeatureLayer的Renderer屬性,在Map中加載顯示GeoFeatureLayer。

/// <summary>

/// 從Style符号庫擷取指定的符号

/// </summary>

/// <param name="sServerStylePath">符号庫路徑</param>

/// <param name="sGalleryClassName">樣式類名稱</param>

/// <param name="symbolName">樣式名稱</param>

/// <returns>Symbol</returns>

public ISymbol GetSymbol(string sServerStylePath, string sGalleryClassName, string symbolName)

{

//1.加載樣式檔案

ISymbol pSymbol = null;

IStyleGallery pStyleGaller = new ServerStyleGallery();//樣式管理集工具

IStyleGalleryStorage pStyleGalleryStorage = pStyleGaller as IStyleGalleryStorage;//樣式檔案管理

pStyleGalleryStorage.TargetFile = sServerStylePath;//serverStylePath為一字元串型,表示ServerStyle檔案位置

//2.擷取樣式子類

//可通過周遊樣式檔案裡的子類,然後找到與目标子類名稱相同的樣式子類即可

IStyleGalleryClass pStyleGalleryClass = null;//樣式子類對象

for (int i = 0; i < pStyleGaller.ClassCount; i++)

pStyleGalleryClass = pStyleGaller.get_Class(i);

if (pStyleGalleryClass.Name != sGalleryClassName)

continue;

IEnumStyleGalleryItem pEnumSyleGalleryItem = pStyleGaller.get_Items(sGalleryClassName, sServerStylePath, "");//擷取樣式子類

pEnumSyleGalleryItem.Reset();

//3.周遊pEnumSyleGalleryItem

IStyleGalleryItem pStyleGallerItem = null;

pStyleGallerItem = pEnumSyleGalleryItem.Next();

while (pStyleGallerItem != null)

Console.WriteLine(pStyleGallerItem.Name);

if (pStyleGallerItem.Name == symbolName)

//4.擷取符号

pSymbol = pStyleGallerItem.Item as ISymbol;

break;

}

return pSymbol;

調用:

GetSymbol(ESRI.ArcGIS.RuntimeManager.ActiveRuntime.Path + @"\\Styles\\ESRI.ServerStyle", "Fill Symbols", "10% Simple hatch");

讀取Style符号庫樣式的方法

當然,使用SymbologyControl來進行互動體驗效果會更好!

本文參考:

<a href="http://blog.csdn.net/rrrrssss00/article/details/6167497">http://blog.csdn.net/rrrrssss00/article/details/6167497#</a>

<a href="http://blog.sina.com.cn/s/blog_694deb730100nhna.html">http://blog.sina.com.cn/s/blog_694deb730100nhna.html</a>