fnwgz
伴读书童
伴读书童
  • 注册日期2004-09-16
  • 发帖数120
  • QQ
  • 铜币638枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:5243回复:18

[讨论]engine中如何读取arcgis符号库中符号

楼主#
更多 发布于:2005-04-12 17:12
<P>如题:在engine开发中如何读取arcgis符号库中符号呢?在ao 用 ISymbolSelector。在engine如何读取呢,请高手指教,谢谢!!!!!!!!</P><img src="images/post/smile/dvbbs/em12.gif" /><img src="images/post/smile/dvbbs/em12.gif" /><img src="images/post/smile/dvbbs/em12.gif" /><img src="images/post/smile/dvbbs/em12.gif" />
喜欢0 评分0
我也许很笨,但是我一直再努力,没有放弃!
zhousky
论坛版主
论坛版主
  • 注册日期2003-08-01
  • 发帖数281
  • QQ
  • 铜币1027枚
  • 威望3点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2005-04-13 11:02
<U><FONT color=#800080 size=2></FONT></U>
如果是设计符号,用ArcMap 中的 style Manager,如果是调用符号,就用下列代码:<P>'*******************************************************************************************
'名    称:SetMarkerSymbol
'功能描述:设置并绘制点符号
'传入参数: pMapControl     MapControl的指针
'          StyleFilePath   样式库
'          SymbolName      符号名称
'          StyleCategory   符号样式的类型(这里为SZFlood)
'          x               点符号的横坐标
'          y               点符号的横坐标
'返回参数:    无
'创建日期:    2005.03.01
'最后更新日期:2005.03.04
'*******************************************************************************************
Public Sub SetMarkerSymbol(pMapControl As IMapControl2, StyleFilePath As String, SymbolName As String, StyleCategory As String, X As Long, Y As Long)
    
    On Error GoTo err_Handle
    '首先定义一个地物类对象
    Dim pGeom As IGeometry
    Set pGeom = pMapControl.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y)
    If pGeom.IsEmpty Then
      Exit Sub
    End If
  
    '定义一个点对象,并根据数据
    Dim pElement As IMarkerElement
    Dim pE As IElement
    Set pElement = New MarkerElement
    Set pE = pElement
    pE.Geometry = pGeom
    
    '根据样式文件和符号名称获取符号
    Dim pMarkerSymbol As IMarkerSymbol
    Set pMarkerSymbol = GetMarkerSymbol(StyleFilePath, SymbolName, StyleCategory)
    '设置线符号类型
    pElement.Symbol = pMarkerSymbol
    
    '在MapControl中显示符号
    Dim pGraphicContainer As IGraphicsContainer
    Set pGraphicContainer = pMapControl.ActiveView
    pGraphicContainer.AddElement pElement, 0
    pMapControl.ActiveView.PartialRefresh esriViewGraphics, Nothing, Nothing
    
    Exit Sub
err_Handle:
    MsgBox "函数SetLineSymbol出错(" + Err.Description + ")", vbInformation, "提示"
    
End Sub</P><P>'*******************************************************************************************
Public Function GetMarkerSymbol(StyleFilePath As String, SymbolName As String, SymbolCatagory As String) As IMarkerSymbol
On Error GoTo EH:
   Set GetMarkerSymbol = GetSymbolFromStyleLib(StyleFilePath, SymbolName, "Marker Symbols", SymbolCatagory)
   Exit Function
EH:
   MsgBox "函数GetMarkerSymbol出错(" + Err.Description + ")", vbInformation, "提示"
End Function</P><P>'***************************************************************************************************
'名    称:GetSymbolFromStyleLib
'功能描述:从符号库中获取指定的符号
'传入参数:styleFilePath  - 符号库文件路径
'         SymbolName     - 符号名称
'         SymbolClass    - 符号类型(点状符号、线状符号、面状符号、注记符号)
'         SymbolCatagory - 符号属性,这里为SZFlood
'返回参数:无
'创建日期:2005.03.01
'最后更新日期:2005.03.01
'***************************************************************************************************
Private Function GetSymbolFromStyleLib(StyleFilePath As String, SymbolName As String, SymbolClass As String, SymbolCatagory As String) As ISymbol
    On Error GoTo EH:
          
    '确认符号名不为空
    If Trim(StyleFilePath) = "" Then
        MsgBox "符号库文件名为空", vbOKOnly, "提示"
        Set GetSymbolFromStyleLib = Nothing
        Exit Function
    End If
    
    '
    Dim pSymbolGallery As IStyleGallery
    Set pSymbolGallery = New StyleGallery
      
    Dim pStyleStore As IStyleGalleryStorage
    Set pStyleStore = pSymbolGallery
    '删除已有的符号库
    RemoveStyleFiles pStyleStore
    pStyleStore.AddFile StyleFilePath
    
    '确认pSymbolGallery不为空
    If pSymbolGallery Is Nothing Then
        Set GetSymbolFromStyleLib = Nothing
        Exit Function
    End If
    
    Dim pEnumStyleItem As IEnumStyleGalleryItem
    Set pEnumStyleItem = pSymbolGallery.Items(SymbolClass, StyleFilePath, SymbolCatagory)
    
    pEnumStyleItem.Reset
    Dim pStyleItem As IStyleGalleryItem
    
    '获取符号库中的符号
    Dim bSymbol As Boolean
    bSymbol = False
    pEnumStyleItem.Reset
    Set pStyleItem = pEnumStyleItem.Next
    Do While Not pStyleItem Is Nothing
        If pStyleItem.Name = SymbolName Then
            Set GetSymbolFromStyleLib = pStyleItem.Item
            bSymbol = True
            Exit Do
        End If
        Set pStyleItem = pEnumStyleItem.Next
    Loop
    If bSymbol = False Then
       MsgBox "符号库中没有该符号", vbOKOnly, "提示"
       Set GetSymbolFromStyleLib = Nothing
    End If
    Exit Function
EH:
    MsgBox "函数GetSymbolFromStyleLib出错(" + Err.Description + ")", vbInformation, "提示"
    
End Function</P>
不要看我噢
举报 回复(0) 喜欢(0)     评分
gsl1982
路人甲
路人甲
  • 注册日期2004-05-08
  • 发帖数135
  • QQ
  • 铜币543枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-04-13 11:21
顶,支持好贴
举报 回复(0) 喜欢(0)     评分
fnwgz
伴读书童
伴读书童
  • 注册日期2004-09-16
  • 发帖数120
  • QQ
  • 铜币638枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2005-04-14 07:19
谢谢!!!!!!!!<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" />
我也许很笨,但是我一直再努力,没有放弃!
举报 回复(0) 喜欢(0)     评分
fnwgz
伴读书童
伴读书童
  • 注册日期2004-09-16
  • 发帖数120
  • QQ
  • 铜币638枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2005-04-14 10:03
<P>2楼兄弟</P><P>Dim pSymbolGallery As IStyleGallery
    Set pSymbolGallery = New StyleGallery
在engine里不支持呀,有别的方法吗???</P><P> <img src="images/post/smile/dvbbs/em12.gif" /><img src="images/post/smile/dvbbs/em12.gif" /><img src="images/post/smile/dvbbs/em12.gif" /><img src="images/post/smile/dvbbs/em12.gif" /></P>
我也许很笨,但是我一直再努力,没有放弃!
举报 回复(0) 喜欢(0)     评分
万里云
路人甲
路人甲
  • 注册日期2005-01-14
  • 发帖数114
  • QQ
  • 铜币414枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2005-04-18 10:51
<P>我也是遇到了相似的问题,有那位做过engine中载入符号库的请指点一下~</P><P>关注中</P>
女口果人尔能看日月白这段言舌,那言兑日月人尔白勺目艮目青有严重白勺散光 
举报 回复(0) 喜欢(0)     评分
cumtyinpc
路人甲
路人甲
  • 注册日期2004-06-18
  • 发帖数9
  • QQ
  • 铜币170枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2005-04-18 16:55
<P>我前段时间用ARCENGINE对ARCGIS的符号管理器进行了重现.</P><P>用ServerStyleGallery 组件类试一下吧</P>
举报 回复(0) 喜欢(0)     评分
waterblue
路人甲
路人甲
  • 注册日期2004-09-02
  • 发帖数72
  • QQ
  • 铜币387枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2005-04-19 14:40
<P>ServerStyleGallery </P><P>没用!</P><P>关注中!</P>
http://www.geostar.com.cn(吉奥 公司) http://www.waterblue.com.cn(水之灵,蓝之静 个人)
举报 回复(0) 喜欢(0)     评分
万里云
路人甲
路人甲
  • 注册日期2005-01-14
  • 发帖数114
  • QQ
  • 铜币414枚
  • 威望0点
  • 贡献值0点
  • 银元0个
8楼#
发布于:2005-04-19 15:11
<P><b><FONT color=#000000>cumtyinpc</FONT></b></P><P><b><FONT color=#000000>能说一下你实现的完整思路吗?</FONT></b></P><P><FONT color=#000000><b>我试了一下</b>ServerStyleGallery没能做出来</FONT></P>
女口果人尔能看日月白这段言舌,那言兑日月人尔白勺目艮目青有严重白勺散光 
举报 回复(0) 喜欢(0)     评分
cl991036
管理员
管理员
  • 注册日期2003-07-25
  • 发帖数5913
  • QQ14265545
  • 铜币29654枚
  • 威望213点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • GIS帝国铁杆
9楼#
发布于:2005-04-19 15:53
不是一般的强啊
没钱又丑,农村户口。头可断,发型一定不能乱。 邮箱:gisempire@qq.com
举报 回复(0) 喜欢(0)     评分
上一页
游客

返回顶部