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

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

楼主#
更多 发布于:2005-04-12 17:12

如题:在engine开发中如何读取arcgis符号库中符号呢?在ao 用 ISymbolSelector。在engine如何读取呢,请高手指教,谢谢!!!!!!!!

喜欢0 评分0
我也许很笨,但是我一直再努力,没有放弃!
默认头像
论坛版主
论坛版主
  • 注册日期2003-08-01
  • 发帖数281
  • QQ
  • 铜币1027枚
  • 威望3点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2005-04-13 11:02
如果是设计符号,用ArcMap 中的 style Manager,如果是调用符号,就用下列代码:

'******************************************************************************************* '名    称: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

'******************************************************************************************* 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

'*************************************************************************************************** '名    称: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

不要看我噢
举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2004-05-08
  • 发帖数135
  • QQ
  • 铜币543枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-04-13 11:21
顶,支持好贴
举报 回复(0) 喜欢(0)     评分
默认头像
伴读书童
伴读书童
  • 注册日期2004-09-16
  • 发帖数120
  • QQ
  • 铜币638枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2005-04-14 07:19
谢谢!!!!!!!!
我也许很笨,但是我一直再努力,没有放弃!
举报 回复(0) 喜欢(0)     评分
默认头像
伴读书童
伴读书童
  • 注册日期2004-09-16
  • 发帖数120
  • QQ
  • 铜币638枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2005-04-14 10:03

2楼兄弟

Dim pSymbolGallery As IStyleGallery     Set pSymbolGallery = New StyleGallery 在engine里不支持呀,有别的方法吗???

我也许很笨,但是我一直再努力,没有放弃!
举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2005-01-14
  • 发帖数114
  • QQ
  • 铜币414枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2005-04-18 10:51

我也是遇到了相似的问题,有那位做过engine中载入符号库的请指点一下~

关注中

女口果人尔能看日月白这段言舌,那言兑日月人尔白勺目艮目青有严重白勺散光 
举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2004-06-18
  • 发帖数9
  • QQ
  • 铜币170枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2005-04-18 16:55

我前段时间用ARCENGINE对ARCGIS的符号管理器进行了重现.

用ServerStyleGallery 组件类试一下吧

举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2004-09-02
  • 发帖数72
  • QQ
  • 铜币387枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2005-04-19 14:40

ServerStyleGallery

没用!

关注中!

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

cumtyinpc

能说一下你实现的完整思路吗?

我试了一下ServerStyleGallery没能做出来

女口果人尔能看日月白这段言舌,那言兑日月人尔白勺目艮目青有严重白勺散光 
举报 回复(0) 喜欢(0)     评分
默认头像
管理员
管理员
  • 注册日期2003-07-25
  • 发帖数5917
  • QQ14265545
  • 铜币29669枚
  • 威望217点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • GIS帝国铁杆
9楼#
发布于:2005-04-19 15:53
不是一般的强啊
没钱又丑,农村户口。头可断,发型一定不能乱。 邮箱:gisempire@qq.com
举报 回复(0) 喜欢(0)     评分
上一页
默认头像

返回顶部