现在的位置: 首页 > 综合 > 正文

获得style文件中的对象(如symbol、color、northarrow等)(vb.Net源码)

2012年12月12日 ⁄ 综合 ⁄ 共 1921字 ⁄ 字号 评论关闭

下面是获得style文件中对象的方法,它可以用于获得arcgis自带的或自己制作的style文件中的对象 

 调用方法如下:

获得color:GetStyleFileObjects("Civic.style", "Colors")

获得Markersymbol:GetStyleFileObjects("Civic.style", "Marker Symbols")

获得其他的对象依此类推。

''' <summary>
  ''' 获得style文件中某个class的所有对象list
  ''' </summary>
  ''' <param name="pStyleFileName">文件名</param>
  ''' <param name="pStyleClassName">class名称</param>
  ''' <returns>对象list</returns>
  ''' <remarks></remarks>
  Private Function GetStyleFileObjects(ByVal pStyleFileName As String, ByVal pStyleClassName As String) As List(Of Object)
    Dim pObjects As New List(Of Object)
    Dim pStyleGlry As IStyleGallery = New ESRI.ArcGIS.Framework.StyleGalleryClass   '这个类是Desktop中的,用于style文件

    ''Dim pStyleGlry As IStyleGallery = ServerStyleGallery  ‘这个类是AE中的,用于serverstyle文件
    Dim pStylStor As IStyleGalleryStorage = pStyleGlry
    Dim pStylePath As String = pStylStor.DefaultStylePath & pStyleFileName
    pStylStor.TargetFile = pStylePath

    Dim pBSTR As IEnumBSTR = pStyleGlry.Categories(pStyleClassName)
    Dim pS As String = pBSTR.Next
    While pS IsNot Nothing
      pObjects.AddRange(GetStyleGalleryItems(pStyleGlry, pStylePath, pStyleClassName, pS))
      pS = pBSTR.Next
    End While
    Return pObjects
  End Function
  ''' <summary>
  ''' 获得style文件中某个class下,某个category中的所有对象list
  ''' </summary>
  ''' <param name="pStyleGlry">StyleGallery</param>
  ''' <param name="pStylePath">style文件路径</param>
  ''' <param name="pStyleClassName">class名称</param>
  ''' <param name="pStyleCategoryName">category名称</param>
  ''' <returns>对象list</returns>
  ''' <remarks></remarks>

  Private Function GetStyleGalleryItems(ByVal pStyleGlry As IStyleGallery, ByVal pStylePath As String, ByVal pStyleClassName As String, ByVal pStyleCategoryName As String) As List(Of Object)
    Dim pObjects As New List(Of Object)
    Dim pItems As IEnumStyleGalleryItem
    pItems = pStyleGlry.Items(pStyleClassName, pStylePath, pStyleCategoryName)
    pItems.Reset()
    Dim pItem As IStyleGalleryItem
    pItem = pItems.Next
    While pItem IsNot Nothing
      pObjects.Add(pItem.Item)
      pItem = pItems.Next
    End While
    Return pObjects
  End Function

抱歉!评论已关闭.