ServerStyle转化为图片

1.符号库条目接口
IStyleGalleryItem:
IStyleGalleryItem是ServerStyleGalleryItem类的接口
包括属性有
类别:Category
编号:ID
名称:Name
符号:Item
2.IStyleGalleryClass接口
IStyleGalleryClass是各个符号类别的接口,现在符号类别是固定的包括点,线,面,颜色,填充等十多种。
利用此借口可以增加新的符号,编辑符号,得到类别名称和描述等功能。
特别是利用Preview函数可以生成内存图片。
3.IStyleGallery接口
是符号库接口可以向符号文件增加新的符号并具有修改,删除等功能,并可以载入符号问件,载入指定的符号文件中的指定类别

public static System.Drawing.Bitmap StyleGalleryItemToBmp(
int iWidth,
int iHeight,
ESRI.ArcGIS.Display.IStyleGalleryClass mStyleGlyCs,
ESRI.ArcGIS.Display.IStyleGalleryItem mStyleGlyItem)
{
//建立符合规格的内存图片
Bitmap bmp = new Bitmap(iWidth,iHeight);
Graphics gImage = Graphics.FromImage(bmp);
//建立对应的符号显示范围
ESRI.ArcGIS.Display.tagRECT rect = new ESRI.ArcGIS.Display.tagRECT();
rect.right = bmp.Width;
rect.bottom = bmp.Height;
//生成预览
System.IntPtr hdc = new IntPtr();
hdc = gImage.GetHdc();
//在图片上绘制符号
mStyleGlyCs.Preview(mStyleGlyItem.Item,hdc.ToInt32(),ref rect);
gImage.ReleaseHdc(hdc);
gImage.Dispose();
return bmp;

}

1.
using ESRI.ArcGIS.Display;
2.
IStyleGallery pStyleGallery = new ESRI.ArcGIS.Display.ServerStyleGalleryClass();
IStyleGalleryStoragepStyleGalleryStorage;
pStyleGalleryStorage = pStyleGallery as ESRI.ArcGIS.Display.IStyleGalleryStorage;
//增加符号文件
pStyleGalleryStorage.AddFile(CurrentStyleFile);
//根据当前符号的类别和文件得到符号的枚举循环子
//符号类别包括Fill Symbol,Line Symbol等
ESRI.ArcGIS.Display.IEnumStyleGalleryItemmEnumStyleItem;
mEnumStyleItem = pStyleGallery.get_Items(CurrentStyleGalleryClass,CurrentStyleFile,"");
//得到符号文件类别的各个条目,增加到一个Combox中
ESRI.ArcGIS.esriSystem.IEnumBSTR pEnumBSTR =

this.pStyleGallery.get_Categories(this.CurrentStyleGalleryClass);
pEnumBSTR.Reset();
string Category = "";
Category = pEnumBSTR.Next();
while(Category != null)
{
this.cbxCategory.Items.Add(Category);
Category = pEnumBSTR.Next();
}
3.
//得到各个符号并转化为图片
mEnumStyleItem.Reset();
mStyleItem = mEnumStyleItem.Next();
int ImageIndex =0;
while(mStyleItem != null)
{
//调用另一个类的方法将符号转化为图片
bmpB = StyleGalleryItemView.StyleGalleryItemToBmp(32,32,mStyleClass,mStyleItem);
bmpS = StyleGalleryItemView.StyleGalleryItemToBmp(16,16,mStyleClass,mStyleItem);
Largeimage.Images.Add(bmpB);
Smallimage.Images.Add(bmpS);
lvItem = new ListViewItem(new

string[]{mStyleItem.Name,mStyleItem.ID.ToString(),mStyleItem.Category},ImageIndex);
this.lvSymbolView.Items.Add(lvItem);
mStyleItem = mEnumStyleItem.Next();
ImageIndex++;
}
//必须采用此方式进行释放,第二次才能正常读取
System.Runtime.InteropServices.Marshal.ReleaseComObject(mEnumStyleItem);
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值