您的位置:首页 > 其它

ArcEngine中加载和读取Style文件或.serverstyle文件

2013-09-16 18:00 806 查看
参考网上的文章,并做了一些补充。原文链接:/article/9135080.html

首先使用接口装载.style文件,注意.style文件需要用到ESRI.ArcGIS.Framework.StyleGalleryClass类,而非ServerStyleGalleryClass类,这个类是用来读取.serverstyle文件的。也就是说,对于加载不同的文件,建立的对象不同。

说明:.style是desktop支持的格式,.serverstyle是engine支持的格式。加载.style文件,需要新建ESRI.ArcGIS.Framework.StyleGalleryClass对象,加载.serverstyle文件,需要新建ServerStyleGalleryClass对象

[c-sharp] view
plaincopy

//获取现有的Styles,初始状态下,styleGalleryStorage中是没有东西的,但styleGalley里边是有东西的(ESRI默认那些样式)

IStyleGallery styleGalley = new ESRI.ArcGIS.Framework.StyleGalleryClass();

IStyleGalleryStorage styleGalleryStorage = styleGalley as IStyleGalleryStorage;

int styleCount = styleGalleryStorage.FileCount;

//判断所选择的文件是否已经装载,若尚未加载,则加载之

bool styleExit = false;

for (int i = 0; i < styleCount; i++)

{

if (styleGalleryStorage.get_File(i) == this.pathBox.Text)

styleExit = true;

}

if (styleExit == false)

styleGalleryStorage.AddFile(Path);

加载Sytle文件中某个指定的Symbol(以Marker为例):

[c-sharp] view
plaincopy

//加载Style文件中某个指定的Symbol

IStyleGalleryItem styleGalleryItem;

IEnumStyleGalleryItem enumStyleGalleryItem = null;

//加载某个Marker Symbol

string markerSymbolName = "TestMarker1";

//这里三个参数,第一个是ClassName,也就是StyleManager中右边树状菜单中的第二级节点名(如Reference Systems,Labels,Marker Symbols等),可以参考下面的图

//第二个参数是StyleSet名,若是自定义的Style文件的话,一般就是文件路径,也可以参考StyleManager中右边树状菜单的第一级节点名(如D:/test.style),可以参考下面的图

//第三个参数是Category名,使用""的话会将该Class和StyleSet下的所有内容都列出来,若指定某个Category,则仅列出该类别下的内容

enumStyleGalleryItem = styleGalley.get_Items("Marker Symbols", styleset, "");

enumStyleGalleryItem.Reset();

styleGalleryItem = enumStyleGalleryItem.Next();

while (styleGalleryItem != null)

{

if (styleGalleryItem.Name == markerSymbolName)

{

IMarkerSymbol symbol = (IMarkerSymbol)styleGalleryItem.Item;

break;

}

styleGalleryItem = enumStyleGalleryItem.Next();

}

System.Runtime.InteropServices.Marshal.ReleaseComObject(enumStyleGalleryItem);

附图:StyleManager,看其中左边树状菜单,第一级节点(ESRI.style),即为StyleSet,对应get_Items函数的第二个参数,第二级节点(例如Reference System等)即为ClassName,对应第一个参数,右侧的列表中,可以看到每一个元素的Category,对应第三个参数

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐