GIS技术分享

ArcEngine 样式对象StyleGallery的使用详解

2019-01-19  本文已影响11人  GIS123

ArcMap里面存在很多预定义的样式对象,比如颜色、图例和各种符号等。用户也可以新建自己的样式对象,来满足实际开发的特殊需要。在进行arcgis engine 二次开发的过程中,用户可直接使用这些样式对象,以丰富制图内容,简化制图过程。

        样式通常按照功能被分为多个类型。这些样式都被保存在一个style文件中,读者可在<ArcGIS 安装目录>\Bin\Styles 文件夹中寻找到这些Style文件。一个样式由多个样式条目(StyleGalleryItem)组成,这些Style条目提供了得到单个地图元素或符号的方法。相似的条目被组织成样式类(StyleGalleryClass)。一个样式类中的条目可依据类型的差异进行分组(Categories)。在AE中样式类需要和AxSymbologyControl控件配合使用。

       StyleGallery是一个与文档对象相关的Style集合对象,它代表了一个Style文件,利用该对象,开发人员可以将一个style文件的样式取出来供系统使用。StyleGallery 类默认实现了IStyleGallery接口,该接口定义了操作一个样式中的种类、样式类和样式条目的方法和属性,如添加、删除、更新样式条目和载入新的Style文件。

       Class属性可使用一个给定的索引值得到Style文件中的某个StyleGalleryClass对象;ClassCount属性用于返回这个Style对象中所有样式类数目;Categories属性可返回一个样式类中的样式种类;Items 属性可以在给定样式类名、Style文件路径和种类名称的情况下,返回符合这些条件的样式条目集对象。下面的示例代码用于获取样式条目。

private void  StyleGalleryDemo()

{

IStyleGallery pStyleGallery = new StyleGalleryClass();

pStyleGallery.LoadStyle(@"C:\Program Files\ArcGIS\Styles\ESRI.Style", "");

for(int i=0;i<=pStyleGallery.ClassCount;i++)

{

MessageBox.Show(pStyleGallery.get_Class(i).Name);

}

IEnumStyleGalleryItem pEnumStyleGalleryItem;

IStyleGalleryItem pStyleGalleryItem;

pEnumStyleGalleryItem = pStyleGallery.get_Items("Scale Bars", @"C:\Program Files\ArcGIS\Styles\ESRI.Style", "hollowscalebar");

pEnumStyleGalleryItem.Reset();

pStyleGalleryItem = pEnumStyleGalleryItem.Next();

while(pStyleGalleryItem !=null)

{

MessageBox.Show(pStyleGalleryItem.Name);

pStyleGalleryItem = pEnumStyleGalleryItem.Next();

}

}

       StyleGallery对象还实现了IStyleGalleryStorage接口,该接口提供了在StyleGallery对象中获得一个Style文件指针的方法,也提供了让开发人员能够添加或删除Style文件的方法。

       DefaultStylePath属性将会返回Style文件的缺省目录;TargetFile属性允许开发人员新建一个Style文件作为添加、删除和更新样式条目的目标文件;CanUpdate用于确定是否允许改变一个Style文件。

      下面是一个新建Style文件并插入一个StyleGalleryItem的例子,执行完这段代码后,在D盘目录下将出现一个test.style文件,若使用ArcMap样式管理器来查看该文件,在ArcMap的Colors样式类中,将会看到所添加的颜色样式条目。使用该函数须添加引用using ESRI.ArcGIS.Framework。

private void AddStyleItem()

{

IStyleGallery pStyleGallery=new StyleGalleryClass();

IRgbColor pRgbColor = new RgbColorClass();

pRgbColor.Red = 255;

pRgbColor.Green = 0;

pRgbColor.Blue = 0;

IStyleGalleryItem pStyleItem = new StyleGalleryItemClass();

pStyleItem.Name = "Red";

pStyleItem.Category = "Default";

pStyleItem.Item = pRgbColor;

IStyleGalleryStorage pStyleStorage = pStyleGallery as IStyleGalleryStorage;

pStyleStorage.TargetFile = @"D:\test.style";

pStyleGallery.AddItem(pStyleItem);

}

   希望这篇文章能够帮助到你们!也希望得到你们的支持!

​​

上一篇 下一篇

猜你喜欢

热点阅读