AO中如何利用style 文件渲染要素

1.新建style文件
在Arcmap中Tools--Styles--StyleManager
添加新的style文件,在文件中添加将要用于渲染的symbol,symbol的命名实别中文。

2 从SDE或者shp中添加地图,根据图层对应的symbol名称从style文件中提取symbol进行渲染操作

 

public   void  RenderLayer(ILayer layer)
{
IGeoFeatureLayer geoLayer;
            
//显示自动注记
            geoLayer = layer as IGeoFeatureLayer;
ISimpleRenderer simpleRenderer 
= new  SimpleRendererClass();
                
string geotype="";
                
if(geoLayer.FeatureClass.ShapeType==esriGeometryType.esriGeometryPolygon)
                
{geotype="3";}
                
else if(geoLayer.FeatureClass.ShapeType==esriGeometryType.esriGeometryPolyline){geotype="2";}
                
else if(geoLayer.FeatureClass.ShapeType==esriGeometryType.esriGeometryPoint){geotype="1";}
                ISymbol sym
=getSymbolByName(geotype,info.FHMC);
                
//Set the symbol property of the renderer
                if(sym!=null)
                
{
                    simpleRenderer.Symbol 
= (ISymbol) sym;
                    
//Set the renderer property of the geo feature layer
                    geoLayer.Renderer = (IFeatureRenderer) simpleRenderer;}

}

private  ISymbol getSymbolByName( string  symbolstyle, string  name)
        
{
            ISymbol result
=null;
            
string stylepath=System.Configuration.ConfigurationSettings.AppSettings["SymbolPath"];
            IStyleGallery pStyleGallery 
=new StyleGalleryClass();
            IntPtr pointer 
= System.Runtime.InteropServices.Marshal.GetComInterfaceForObject(pStyleGallery, typeof(IStyleGallery));
            IStyleGalleryStorage pStyleStorage
=pStyleGallery as IStyleGalleryStorage;
            
            
//IStyleGalleryClass pStyleClass;
            IEnumStyleGalleryItem pEnumStyleGall;
            IStyleGalleryItem pStyleItem; 
            
//IMarkerSymbol pMarkerSym;
            
// pStyleGallery.ImportStyle(stylepath);
            string pp=pStyleStorage.DefaultStylePath;
            pStyleStorage.AddFile(stylepath);    
            
if(symbolstyle=="1")
            
{                                                                                                                                       
                pEnumStyleGall 
= pStyleGallery.get_Items("Marker Symbols", stylepath, "");}

            
else if(symbolstyle=="2"){pEnumStyleGall = pStyleGallery.get_Items("Line Symbols", stylepath, "");}
            
else if(symbolstyle=="3"){pEnumStyleGall = pStyleGallery.get_Items("Fill Symbols", stylepath, "");}
            
else{return null;}
            pEnumStyleGall.Reset();
            pStyleItem 
= pEnumStyleGall.Next();

            
while ( pStyleItem != null)  //Loop through and access each marker
            {
                
if(pStyleItem.Name==name){result=pStyleItem.Item as ISymbol;break;}
                
                pStyleItem 
= pEnumStyleGall.Next();
                
            }

            
return result;
        }

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值