ArcEngine中載入和讀取Style檔案

weixin_34015860發表於2016-05-10

轉自http://blog.csdn.net/rrrrssss00/article/details/6167497

首先使用介面裝載.style檔案,注意.style檔案需要用到ESRI.ArcGIS.Framework.StyleGalleryClass類,而非ServerStyleGallery類,這個類是用來讀取.serverstyle檔案的

 

 

[c-sharp] view plain copy
 
  1.  //獲取現有的Styles,初始狀態下,styleGalleryStorage中是沒有東西的,但styleGalley裡邊是有東西的(ESRI預設那些樣式)  
  2. IStyleGallery    styleGalley = new ESRI.ArcGIS.Framework.StyleGalleryClass();  
  3. IStyleGalleryStorage  styleGalleryStorage = styleGalley as IStyleGalleryStorage;  
  4. int styleCount = styleGalleryStorage.FileCount;  
  5. //判斷所選擇的檔案是否已經裝載,若尚未載入,則載入之  
  6. bool styleExit = false;  
  7. for (int i = 0; i < styleCount; i++)  
  8. {  
  9.       if (styleGalleryStorage.get_File(i) == this.pathBox.Text)  
  10.             styleExit = true;  
  11. }  
  12. if (styleExit == false)  
  13.             styleGalleryStorage.AddFile(Path);  

 

 

載入Sytle檔案中某個指定的Symbol(以Marker為例):

 

[c-sharp] view plain copy
 
  1. //載入Style檔案中某個指定的Symbol  
  2. IStyleGalleryItem styleGalleryItem;  
  3. IEnumStyleGalleryItem enumStyleGalleryItem = null;  
  4. //載入某個Marker Symbol  
  5. string markerSymbolName = "TestMarker1";  
  6. //這裡三個引數,第一個是ClassName,也就是StyleManager中右邊樹狀選單中的第二級節點名(如Reference Systems,Labels,Marker Symbols等),可以參考下面的圖  
  7. //第二個引數是StyleSet名,若是自定義的Style檔案的話,一般就是檔案路徑,也可以參考StyleManager中右邊樹狀選單的第一級節點名(如D:/test.style),可以參考下面的圖  
  8. //第三個引數是Category名,使用""的話會將該Class和StyleSet下的所有內容都列出來,若指定某個Category,則僅列出該類別下的內容  
  9. enumStyleGalleryItem = styleGalley.get_Items("Marker Symbols", styleset, "");  
  10. enumStyleGalleryItem.Reset();  
  11. styleGalleryItem = enumStyleGalleryItem.Next();  
  12. while (styleGalleryItem != null)  
  13. {  
  14.     if (styleGalleryItem.Name == markerSymbolName)  
  15.     {  
  16.         IMarkerSymbol symbol = (IMarkerSymbol)styleGalleryItem.Item;  
  17.         break;  
  18.     }  
  19.     styleGalleryItem = enumStyleGalleryItem.Next();  
  20. }  
  21. System.Runtime.InteropServices.Marshal.ReleaseComObject(enumStyleGalleryIte  

 

 

附圖:StyleManager,看其中左邊樹狀選單,第一級節點(ESRI.style),即為StyleSet,對應get_Items函式的第二個引數,第二級節點(例如Reference System等)即為ClassName,對應第一個引數,右側的列表中,可以看到每一個元素的Category,對應第三個引數

 

相關文章