修改图层的symbol(AE+C#)
取出一个图层的symbol 在其基础上对其进行修改
private void button1_Click(object sender, EventArgs e)
{
mp;nbsp; //设定要改变symbol的图层
ILayer pLayer=m_mapControl.get_Layer(0);
IGeoFeatureLayer pGeoFeatLayer = pLayer as IGeoFeatureLayer;
//得到此图层的symbol
ISimpleMarkerSymbol pMarkerSymbol=new SimpleMarkerSymbolClass();
pMarkerSymbol=GetFeatureLayerSymbol(pLayer) as ISimpleMarkerSymbol;
//对symbol进行改变操作
pMarkerSymbol.Size=20;
//把改变后的symbol赋给此图层
ISimpleRenderer pRenderer=new SimpleRendererClass();
pRenderer.Symbol=pMarkerSymbol as ISymbol;
pGeoFeatLayer.Renderer = pRenderer as IFeatureRenderer;
}
/// <summary> 得到指定图层的symbol</summary>
/// <param name="layer"></param>
/// <returns></returns>
public ISymbol GetFeatureLayerSymbol(ILayer layer)
{
ISymbol pSymbol = null;
IGeoFeatureLayer pGeoFeatLayer = (IGeoFeatureLayer)layer;
IFeatureClass pFeatClass = pGeoFeatLayer.FeatureClass;
IFeatureCursor pFeatCursor = pFeatClass.Search(null, true);
IFeature pFeature = pFeatCursor.NextFeature();
if (pFeature == null)
{
pFeature = pFeatCursor.NextFeature();
}
else
{
IFeatureRenderer pFeatRen;
pFeatRen = pGeoFeatLayer.Renderer;
pSymbol = pFeatRen.get_SymbolByFeature(pFeature);
}
return pSymbol;
}