Ejemplo n.º 1
0
        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
            {
            }
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
 /// <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);
     }
 }
Ejemplo n.º 4
0
        /// <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;
        }
Ejemplo n.º 5
0
        //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;
        }