/// <summary> /// 根据单波段拉伸渲染 /// </summary> /// <param name="rasterDataset">栅格数据集</param> /// <param name="graypos">第几波段</param> /// <param name="stretchType">拉伸方式</param> /// <param name="pFromColor">fromColor</param> /// <param name="pToColor">toColor</param> /// <returns></returns> public static IRasterRenderer StretchRenderer(ESRI.ArcGIS.Geodatabase.IRasterDataset rasterDataset, int graypos, esriRasterStretchTypesEnum stretchType, IRgbColor pFromColor, IRgbColor pToColor) { try { //Create the color ramp. IAlgorithmicColorRamp colorRamp = new AlgorithmicColorRampClass(); colorRamp.Size = 255; colorRamp.FromColor = pFromColor; colorRamp.ToColor = pToColor; bool createColorRamp; colorRamp.CreateRamp(out createColorRamp); //Create a stretch renderer. IRasterStretchColorRampRenderer stretchRenderer = new RasterStretchColorRampRendererClass(); IRasterRenderer rasterRenderer = (IRasterRenderer)stretchRenderer; //Set the renderer properties. IRaster raster = rasterDataset.CreateDefaultRaster(); rasterRenderer.Raster = raster; rasterRenderer.Update(); stretchRenderer.BandIndex = graypos; stretchRenderer.ColorRamp = colorRamp; //Set the stretch type. IRasterStretch pRasterStretch = (IRasterStretch)rasterRenderer; pRasterStretch.StretchType = stretchType; pRasterStretch.StandardDeviationsParam = 2; return(rasterRenderer); } catch { return(null); } }
/// <summary> /// 拉伸渲染模式(貌似) /// </summary> /// <param name="rasterDataset"></param> /// <returns></returns> private static IRasterRenderer StretchRenderer(ESRI.ArcGIS.Geodatabase.IRasterDataset rasterDataset, int graypos, int i) { try { //Define the from and to colors for the color ramp. IRgbColor fromColor = new RgbColorClass(); fromColor.Red = 255; fromColor.Green = 0; fromColor.Blue = 0; IColor toColor = new RgbColorClass(); //此处应该是写错了 fromColor.Red = 0; fromColor.Green = 255; fromColor.Blue = 0; //Create the color ramp. IAlgorithmicColorRamp colorRamp = new AlgorithmicColorRampClass(); colorRamp.Size = 255; colorRamp.FromColor = fromColor; colorRamp.ToColor = toColor; bool createColorRamp; colorRamp.CreateRamp(out createColorRamp); //Create a stretch renderer. IRasterStretchColorRampRenderer stretchRenderer = new RasterStretchColorRampRendererClass(); //设置显示对比度和亮度 //((IRasterDisplayProps)stretchRenderer).BrightnessValue = -90; IRasterRenderer rasterRenderer = (IRasterRenderer)stretchRenderer; //Set the renderer properties. IRaster raster = rasterDataset.CreateDefaultRaster(); rasterRenderer.Raster = raster; rasterRenderer.Update(); stretchRenderer.BandIndex = graypos; //stretchRenderer.ColorRamp = colorRamp; //Set the stretch type. IRasterStretch stretchType = (IRasterStretch)rasterRenderer; stretchType.StretchType = esriRasterStretchTypesEnum.esriRasterStretch_StandardDeviations; stretchType.StandardDeviationsParam = 2; return(rasterRenderer); } catch { return(null); } }
public static IRasterRenderer ClassifyRenderer(ESRI.ArcGIS.Geodatabase.IRasterDataset pRasterDataset) { try { //create the classify render:创建渲染器 IRasterClassifyColorRampRenderer pClassifyRenderer = new RasterClassifyColorRampRendererClass(); IRasterRenderer pRasterRenderer = (IRasterRenderer)pClassifyRenderer; IRaster pRaster = pRasterDataset.CreateDefaultRaster(); pRasterRenderer.Raster = pRaster; pClassifyRenderer.ClassCount = 10; pRasterRenderer.Update(); //创建颜色 IRgbColor pFromColor = new RgbColorClass(); pFromColor.Red = 255; pFromColor.Green = 0; pFromColor.Blue = 0; IRgbColor pToColor = new RgbColorClass(); pToColor.Red = 0; pToColor.Green = 255; pToColor.Blue = 255; //set the color ramp for the symbology:生成色带 IAlgorithmicColorRamp pRamp = new AlgorithmicColorRampClass(); pRamp.Size = 10; pRamp.FromColor = pFromColor; pRamp.ToColor = pToColor; bool pBoolColorRamp; pRamp.CreateRamp(out pBoolColorRamp); //create the symbol for the classes.:创建符号 IFillSymbol pFillSymbol = new SimpleFillSymbolClass(); for (int i = 0; i < pClassifyRenderer.ClassCount; i++) { pFillSymbol.Color = pRamp.get_Color(i); pClassifyRenderer.set_Symbol(i, (ISymbol)pFillSymbol); pClassifyRenderer.set_Label(i, Convert.ToString(i)); } return(pRasterRenderer); } catch (System.Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); return(null); } }