红色的冰Oo 2023-03-24 16:36 采纳率: 57.1%
浏览 51
已结题

C#ArcEngine二次开发如何改变影像的RGB默认值

C#ArcEngine二次开发如何改变影像的RGB值
使用的以下方法出现的是默认的RGB值,无法修改

                //RGB颜色显示
                //OpenYXTRaster(WJName);
                string selectName = System.IO.Path.GetFileName(WJName);//tif打开
                IRaster pRas = openRaster(System.IO.Path.GetDirectoryName(WJName), selectName);
                IRasterLayer pRLyr = new RasterLayerClass();
                pRLyr.CreateFromRaster(pRas);
                axMapControl1.AddLayer(pRLyr);

  • 写回答

8条回答 默认 最新

  • 社区专家-Monster-XH 2023-03-24 16:50
    关注

    基于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等。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 4月2日
  • 已采纳回答 3月25日
  • 创建了问题 3月24日