public void SetRasterNoDataColor() { try { if (m_pLyr == null) { return; } ILayer pLayer = m_pLyr; if (!(pLayer is IRasterLayer) && !(pLayer is IRasterCatalogLayer)) { return; } //获得当前图层的符号 IRasterRenderer pRasterRender = null; if (pLayer is IRasterLayer) { IRasterLayer pRasterLayer = pLayer as IRasterLayer; pRasterRender = pRasterLayer.Renderer; } else if (pLayer is IRasterCatalogLayer) { IRasterCatalogLayer pRasterCatalogLayer = pLayer as IRasterCatalogLayer; pRasterRender = pRasterCatalogLayer.Renderer; } else { return; } if (pRasterRender == null) { return; } IRasterDisplayProps pRasterDisplayProps = pRasterRender as IRasterDisplayProps; if (pRasterDisplayProps == null) { return; } //获得当前的颜色值 并设置 IColor pColor = ConvertColorToIColor(this.colorNoData.SelectedColor); pColor.Transparency = (byte)this.sliderTransparency.Value; pRasterDisplayProps.NoDataColor = pColor; } catch { } }
private void InitRasterInfo() { if (m_pLyr == null) { return; } ILayer pLayer = m_pLyr; if (!(pLayer is IRasterLayer) && !(pLayer is IRasterCatalogLayer)) { return; } //获得当前图层的符号 IRasterRenderer pRasterRender = null; if (pLayer is IRasterLayer) { IRasterLayer pRasterLayer = pLayer as IRasterLayer; pRasterRender = pRasterLayer.Renderer; } else if (pLayer is IRasterCatalogLayer) { IRasterCatalogLayer pRasterCatalogLayer = pLayer as IRasterCatalogLayer; pRasterRender = pRasterCatalogLayer.Renderer; } else { return; } if (pRasterRender == null) { return; } IRasterDisplayProps pRasterDisplayProps = pRasterRender as IRasterDisplayProps; if (pRasterDisplayProps == null) { return; } IColor pColor = pRasterDisplayProps.NoDataColor; //设置界面 this.colorNoData.SelectedColor = System.Drawing.ColorTranslator.FromOle(pColor.RGB); this.sliderTransparency.Value = (int)pColor.Transparency; }
/// <summary> /// Occurs when this command is clicked /// </summary> /// public void RasterStretchColorMapRender(IRasterLayer pRasterlayer) { try { IRaster pRaster = pRasterlayer.Raster; int intTransPValue = 30; IColor pFromColor = new RgbColorClass(); //Red + (0x100 * Green) + (0x10000 * Blue); pFromColor.RGB = 255 + 0x100 * 255; IColor pToColor = new RgbColorClass(); pToColor.RGB = 0x10000 * 255; IRasterStretchColorRampRenderer pStretchRender = (IRasterStretchColorRampRenderer)pRasterlayer.Renderer; IRasterRenderer pRasterRender = default(IRasterRenderer); pRasterRender = (IRasterRenderer)pStretchRender; pRasterRender.Raster = pRaster; pRasterRender.Update(); IAlgorithmicColorRamp pColorRamp = new AlgorithmicColorRamp(); pColorRamp.Size = 255; pColorRamp.FromColor = pFromColor; pColorRamp.ToColor = pToColor; bool outvalue = true; pColorRamp.CreateRamp(out outvalue); pStretchRender.BandIndex = 0; pStretchRender.ColorRamp = pColorRamp; if (intTransPValue > 0) { IRasterDisplayProps pRRenProp = (IRasterDisplayProps)pStretchRender; pRRenProp.TransparencyValue = intTransPValue; } pRasterRender.Update(); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } }
/// <summary> /// 设置NoData的颜色值 /// </summary> /// <param name="pLayer"></param> public static void SetRasterDefaultNoDataColor(ILayer pLayer) { if (pLayer == null) { return; } //获得当前图层的符号 IRasterRenderer pRasterRender = null; if (pLayer is IRasterLayer) { IRasterLayer pRasterLayer = pLayer as IRasterLayer; pRasterRender = pRasterLayer.Renderer; } else if (pLayer is IRasterCatalogLayer) { IRasterCatalogLayer pRasterCatalogLayer = pLayer as IRasterCatalogLayer; pRasterRender = pRasterCatalogLayer.Renderer; } else { return; } if (pRasterRender == null) { return; } //设置NoData颜色值 IColor pColor = null; if (pRasterRender is IRasterRGBRenderer) //默认是白色 //changed by chulili 20110825 0是透明 全部默认Nodata颜色是透明 { pColor = GetColorRGB(255, 255, 255, 0); } else if (pRasterRender is IRasterUniqueValueRenderer)//默认是白色 { pColor = GetColorRGB(255, 255, 255, 0); } else if (pRasterRender is IRasterStretchColorRampRenderer)//默认是透明色 0是透明 { pColor = GetColorRGB(255, 255, 255, 0); } else if (pRasterRender is IRasterClassifyColorRampRenderer)//默认是白色 { pColor = GetColorRGB(255, 255, 255, 0); } else { return; } //设置颜色 IRasterDisplayProps pRasterDisplayProps = pRasterRender as IRasterDisplayProps; if (pRasterDisplayProps == null) { return; } pRasterDisplayProps.NoDataColor = pColor; }
//yjl 20110827 modify 根据渲染对象初始化界面 public void InitRasterRendererObject(IRasterLayer inRL, IRasterRenderer pRenderer) { flag = true; IRaster pRaster = inRL.Raster; IRasterBandCollection pRBC = pRaster as IRasterBandCollection; IRasterBand pRB = pRBC.Item(0);//获取第一波段 bool hasStatis = false; pRB.HasStatistics(out hasStatis); if (!hasStatis) { pRB.ComputeStatsAndHist();//统计直方图 } IRasterStatistics pRStatis = pRB.Statistics; minValueInput.Value = pRStatis.Minimum;//最大最小值 maxValueInput.Value = pRStatis.Maximum; IRasterStretchColorRampRenderer pRSCRRenderer = pRenderer as IRasterStretchColorRampRenderer; if (pRSCRRenderer.ColorScheme != "") { cmbColorRamp.Text = pRSCRRenderer.ColorScheme;//颜色方案 } DevComponents.Editors.ComboItem selItem = cmbColorRamp.SelectedItem as DevComponents.Editors.ComboItem; Bitmap bmp = new Bitmap(selItem.Image); bmp.RotateFlip(RotateFlipType.Rotate270FlipNone); pBoxColorRamp.Image = bmp; //txtMaxLb.Text=pRSCRRenderer.LabelHigh;//标签 //txtMinLb.Text=pRSCRRenderer.LabelLow; IRasterStretch pRStretch = pRSCRRenderer as IRasterStretch; if (pRStretch.Background)//背景值 { checkBackgroundColor.Checked = true; dbBackgrdVal.Value = pRStretch.get_BackgroundValues(); IColor pColor = pRStretch.BackgroundColor; //esri color System.Drawing.Color bakColor = cWinColor(pColor); colorPickerBackGround.SelectedColor = bakColor; //背景值颜色 } else { checkBackgroundColor.Checked = false; dbBackgrdVal.Enabled = false; } if (pRStretch.Invert)//色带方向 { checkReverse.Checked = true; } else { checkReverse.Checked = false; } IRasterDisplayProps pRDP = pRSCRRenderer as IRasterDisplayProps; System.Drawing.Color nodataColor = cWinColor(pRDP.NoDataColor); colorPickerNoData.SelectedColor = nodataColor;//无效值颜色 flag = false; }