基于Monster 组和GPT的调写:
你先建个RGB栅格渲染器,再设置颜色。
//获取IRasterLayer接口
IRasterLayer pRLyr = (IRasterLayer)axMapControl1.get_Layer(0);
//获取IRasterRenderer接口
IRasterRenderer pRRen = pRLyr.Renderer as IRasterRenderer;
//创建RGB颜色
IColor pRed = new RgbColorClass() { Red = 255 };
IColor pGreen = new RgbColorClass() { Green = 255 };
IColor pBlue = new RgbColorClass() { Blue = 255 };
//设置RGB栅格渲染器
IRgbRenderer pRgbRen = new RgbRendererClass();
pRgbRen.RedBandIndex = 0;
pRgbRen.GreenBandIndex = 1;
pRgbRen.BlueBandIndex = 2;
pRgbRen.UseGamma = true;
pRgbRen.GammaValue = 1.2;
pRgbRen.RedContrast = 1.2;
pRgbRen.GreenContrast = 1.2;
pRgbRen.BlueContrast = 1.2;
pRgbRen.RedColor = pRed;
pRgbRen.GreenColor = pGreen;
pRgbRen.BlueColor = pBlue;
//将RGB栅格渲染器设置为栅格图层的渲染器
pRRen.RasterRenderer = pRgbRen as IRasterRenderer;
这样式子,试试更改RGB颜色的值,咱就说把红色通道的值设置为0:
//获取IRasterLayer接口
IRasterLayer pRLyr = (IRasterLayer)axMapControl1.get_Layer(0);
//获取IRasterRenderer接口
IRasterRenderer pRRen = pRLyr.Renderer as IRasterRenderer;
//获取RGB栅格渲染器
IRgbRenderer pRgbRen = pRRen.RasterRenderer as IRgbRenderer;
//更改红色通道的颜色为黑色
IColor pBlack = new RgbColorClass() { Red = 0, Green = 0, Blue = 0 };
pRgbRen.RedColor = pBlack;
//刷新地图控件
axMapControl1.Refresh();
就能在C# ArcEngine中通过修改RGB颜色来更改影像的颜色了。用openRaster方法打开影像前,要先加载影像所需的引用,比如ESRI.ArcGIS.DataSourcesRaster等。