02
20
图层初始颜色
作者:独木舟 日期:2009-02-20
当添加图层时改变图层的初始颜色及线型,点的形状与大小:添加下面代码之前一定要确保图层已经添加:
private void button13_Click(object sender, System.EventArgs e)
{
ILayer lyr; //定义一个图层. ILayer 为所有图层的父接口,包括空间和非空间
//定义一个简单渲染对象,这接口实现的功能是图层
//上所有的地物以同一中颜色的符号显示
ISimpleRenderer pRenderer;
//定义一个空间地物层, IGeoFeatureLayer只能为空间地物的层
IGeoFeatureLayer pGeoFeatureLayer;
//循环所有的图层
for(int i=0;i<MapCtr.ActiveView.FocusMap.LayerCount;i++)
{
//取得第i个图层并赋值给lyr
lyr= MapCtr.ActiveView.FocusMap.get_Layer(i);
if(lyr is IGeoFeatureLayer) //判断图层是不是地物层,如果是地物层进行下边的操作
{
pGeoFeatureLayer=(IGeoFeatureLayer) lyr;
pRenderer=(ISimpleRenderer)pGeoFeatureLayer.Renderer;
IRgbColor pColor=new RgbColorClass();//颜色接口
ISimpleLineSymbol pLineSymbol=new SimpleLineSymbolClass();//线接口,可以实现线形和颜色
//pGeoFeatureLayer.FeatureClass.ShapeType 用于判断地物的形状,点 多点、线、多边形。
//还有其他。下边没列举可以通过esriGeometryType查看
switch(pGeoFeatureLayer.FeatureClass.ShapeType )
{
#region 面图层
case esriGeometryType.esriGeometryPolygon:
//定义颜色
pColor.Blue=255;
//线符号
pLineSymbol.Color=pColor;
pLineSymbol.Width=1;
//面符号
ISimpleFillSymbol pFillSymbol=new SimpleFillSymbolClass();
pFillSymbol.Outline=pLineSymbol;
pColor.Red=0;
pColor.Green=0;
pFillSymbol.Color=pColor;
pRenderer.Symbol=(ISymbol)pFillSymbol;
break;
#endregion 面图层
#region 线图层
case esriGeometryType.esriGeometryPolyline:
pColor.Red=0;
pColor.Green=0;
pColor.Blue=0;
//线符号
pLineSymbol.Color=pColor;
pLineSymbol.Width=1;
pRenderer.Symbol=(ISymbol)pLineSymbol;
break;
#endregion 线图层
#region 点图层
case esriGeometryType.esriGeometryPoint :
pColor.Red=255;
pColor.Green=0;
pColor.Blue=0;
ISimpleMarkerSymbol symSP=new SimpleMarkerSymbolClass();
symSP.Color=pColor;
symSP.Size=1;
pRenderer.Symbol=(ISymbol) symSP;
break;
case esriGeometryType.esriGeometryMultipoint :
pColor.Red=255;
pColor.Green=0;
pColor.Blue=0;
ISimpleMarkerSymbol symMP=new SimpleMarkerSymbolClass();
symMP.Color=pColor;
symMP.Size=1;
pRenderer.Symbol=(ISymbol) symMP;
break;
#endregion 点图层
default:
break;
}
this.MapCtr.ActiveView.Refresh();//刷新图层
}
}
}
文章出处:http://blog.gisforum.net/u/142/archives/2006/69.html
private void button13_Click(object sender, System.EventArgs e)
{
ILayer lyr; //定义一个图层. ILayer 为所有图层的父接口,包括空间和非空间
//定义一个简单渲染对象,这接口实现的功能是图层
//上所有的地物以同一中颜色的符号显示
ISimpleRenderer pRenderer;
//定义一个空间地物层, IGeoFeatureLayer只能为空间地物的层
IGeoFeatureLayer pGeoFeatureLayer;
//循环所有的图层
for(int i=0;i<MapCtr.ActiveView.FocusMap.LayerCount;i++)
{
//取得第i个图层并赋值给lyr
lyr= MapCtr.ActiveView.FocusMap.get_Layer(i);
if(lyr is IGeoFeatureLayer) //判断图层是不是地物层,如果是地物层进行下边的操作
{
pGeoFeatureLayer=(IGeoFeatureLayer) lyr;
pRenderer=(ISimpleRenderer)pGeoFeatureLayer.Renderer;
IRgbColor pColor=new RgbColorClass();//颜色接口
ISimpleLineSymbol pLineSymbol=new SimpleLineSymbolClass();//线接口,可以实现线形和颜色
//pGeoFeatureLayer.FeatureClass.ShapeType 用于判断地物的形状,点 多点、线、多边形。
//还有其他。下边没列举可以通过esriGeometryType查看
switch(pGeoFeatureLayer.FeatureClass.ShapeType )
{
#region 面图层
case esriGeometryType.esriGeometryPolygon:
//定义颜色
pColor.Blue=255;
//线符号
pLineSymbol.Color=pColor;
pLineSymbol.Width=1;
//面符号
ISimpleFillSymbol pFillSymbol=new SimpleFillSymbolClass();
pFillSymbol.Outline=pLineSymbol;
pColor.Red=0;
pColor.Green=0;
pFillSymbol.Color=pColor;
pRenderer.Symbol=(ISymbol)pFillSymbol;
break;
#endregion 面图层
#region 线图层
case esriGeometryType.esriGeometryPolyline:
pColor.Red=0;
pColor.Green=0;
pColor.Blue=0;
//线符号
pLineSymbol.Color=pColor;
pLineSymbol.Width=1;
pRenderer.Symbol=(ISymbol)pLineSymbol;
break;
#endregion 线图层
#region 点图层
case esriGeometryType.esriGeometryPoint :
pColor.Red=255;
pColor.Green=0;
pColor.Blue=0;
ISimpleMarkerSymbol symSP=new SimpleMarkerSymbolClass();
symSP.Color=pColor;
symSP.Size=1;
pRenderer.Symbol=(ISymbol) symSP;
break;
case esriGeometryType.esriGeometryMultipoint :
pColor.Red=255;
pColor.Green=0;
pColor.Blue=0;
ISimpleMarkerSymbol symMP=new SimpleMarkerSymbolClass();
symMP.Color=pColor;
symMP.Size=1;
pRenderer.Symbol=(ISymbol) symMP;
break;
#endregion 点图层
default:
break;
}
this.MapCtr.ActiveView.Refresh();//刷新图层
}
}
}
文章出处:http://blog.gisforum.net/u/142/archives/2006/69.html
评论: 0 | 引用: 0 | 查看次数: -
发表评论