//
        //设置波段可用性
        //
        private void SetUseBand(IRasterRGBRenderer rasterRGBRenderer, int num, BarCheckItem barCheckItem)
        {
            switch (num)
            {
            case 0:
                rasterRGBRenderer.UseRedBand = barCheckItem.Checked;
                break;

            case 1:
                rasterRGBRenderer.UseGreenBand = barCheckItem.Checked;
                break;

            case 2:
                rasterRGBRenderer.UseBlueBand = barCheckItem.Checked;
                break;
            }
        }
        public void Apply()
        {
            try
            {
                for (int i = 0; i < this.exListView1.Items.Count; i++)
                {
                    EXListViewItem item = this.exListView1.Items[i] as EXListViewItem;
                    string         text = item.SubItems[1].Text;
                    int            num2 = 0;
                    int            num3 = 0;
                    while (num3 < this.comboBox_0.Items.Count)
                    {
                        if (text == this.comboBox_0.Items[num3].ToString())
                        {
                            goto Label_0078;
                        }
                        num3++;
                    }
                    goto Label_007B;
Label_0078:
                    num2 = num3;
Label_007B:
                    if (i == 0)
                    {
                        this.irasterRGBRenderer_0.RedBandIndex = num2;
                        this.irasterRGBRenderer_0.UseRedBand   = (item.SubItems[2] as EXBoolListViewSubItem).BoolValue;
                    }
                    else if (i == 1)
                    {
                        this.irasterRGBRenderer_0.GreenBandIndex = num2;
                        this.irasterRGBRenderer_0.UseGreenBand   = (item.SubItems[2] as EXBoolListViewSubItem).BoolValue;
                    }
                    else
                    {
                        this.irasterRGBRenderer_0.BlueBandIndex = num2;
                        this.irasterRGBRenderer_0.UseBlueBand   = (item.SubItems[2] as EXBoolListViewSubItem).BoolValue;
                    }
                }
                if (this.chkShowBackground.Checked)
                {
                    try
                    {
                        double[] numArray = new double[]
                        {
                            double.Parse(this.txtBackgroundR.Text), double.Parse(this.txtBackgroundG.Text),
                            double.Parse(this.txtBackgroundB.Text)
                        };
                        (this.irasterRGBRenderer_0 as IRasterStretch2).BackgroundValue = numArray;
                    }
                    catch
                    {
                    }
                }
                IObjectCopy        copy      = new ObjectCopyClass();
                IRasterRGBRenderer renderer1 = copy.Copy(this.irasterRGBRenderer_0) as IRasterRGBRenderer;
                this.irasterLayer_0.Renderer = this.irasterRGBRenderer_0 as IRasterRenderer;
            }
            catch (Exception)
            {
            }
        }
Exemple #3
0
        /// <summary>
        /// 图层树控件事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void axTOCControl_OnMouseDown(object sender, ITOCControlEvents_OnMouseDownEvent e)
        {
            esriTOCControlItem item  = esriTOCControlItem.esriTOCControlItemNone;
            IBasicMap          map   = null;
            ILayer             layer = null;
            object             other = null;
            object             index = null;

            _tocControl.HitTest(e.x, e.y, ref item, ref map, ref layer, ref other, ref index);
            if (index != null)
            {
                currentIndex = (int)index;
            }
            else
            {
                currentIndex = 0;
            }

            //确保有项目被选择
            //if (item == esriTOCControlItem.esriTOCControlItemMap)
            //{
            //    _tocControl.SelectItem(map, null);
            //}
            if (item == esriTOCControlItem.esriTOCControlItemLayer && layer == currentLayer)
            {
                _tocControl.SelectItem(layer, null);
            }
            legend       = other;
            currentLayer = layer;
            //选择的是Map
            if (item == esriTOCControlItem.esriTOCControlItemMap)
            {
                //将Map信息传递给propertyGrid控件
                MapInfo _mapInfo = new MapInfo(_mapControl.Map);
                //propertyGrid.SelectedObject = _mapInfo;
                //如果是右键点击,弹出菜单
                if (e.button == 2)
                {
                    _mapMenu.PopupMenu(e.x, e.y, _tocControl.hWnd);
                }
            }


            //选择的是 Layer
            if (item == esriTOCControlItem.esriTOCControlItemLayer)
            {
                if (e.button == 2)
                {
                    this._mapControl.CustomProperty = layer;
                    _layerMenu.PopupMenu(e.x, e.y, _tocControl.hWnd);
                }
            }

            //Legend  选择的是遥感影像 修改波段 RGB
            if (item == esriTOCControlItem.esriTOCControlItemLegendClass && e.button == 1)
            {
                IRasterLayer pRasterLayer = layer as IRasterLayer;
                if (pRasterLayer != null && pRasterLayer.BandCount > 1) //判断是影像后排除单波段影像。
                {
                    BandSelectorMenu.Items.Clear();
                    BandSelectorMenu.Items.Add("不可见");
                    ToolStripSeparator separator = new ToolStripSeparator();
                    BandSelectorMenu.Items.Add(separator);

                    string toolItem;
                    for (int i = 0; i < pRasterLayer.BandCount; i++)
                    {
                        toolItem = "Band_" + (i + 1);
                        BandSelectorMenu.Items.Add(toolItem);
                    }
                    IRasterRGBRenderer pRGBRender   = pRasterLayer.Renderer as IRasterRGBRenderer;
                    ToolStripMenuItem  VisuableItem = BandSelectorMenu.Items[0] as ToolStripMenuItem;
                    ToolStripMenuItem  ChangeItem;
                    if ((int)index == 0)
                    {
                        if (pRGBRender.UseRedBand == false)
                        {
                            VisuableItem.Checked = true;
                        }
                        else
                        {
                            ChangeItem         = BandSelectorMenu.Items[pRGBRender.RedBandIndex + 2] as ToolStripMenuItem;
                            ChangeItem.Checked = true;
                        }
                    }
                    if ((int)index == 1)
                    {
                        if (pRGBRender.UseGreenBand == false)
                        {
                            VisuableItem.Checked = true;
                        }
                        else
                        {
                            ChangeItem         = BandSelectorMenu.Items[pRGBRender.GreenBandIndex + 2] as ToolStripMenuItem;
                            ChangeItem.Checked = true;
                        }
                    }
                    if ((int)index == 2)
                    {
                        if (pRGBRender.UseBlueBand == false)
                        {
                            VisuableItem.Checked = true;
                        }
                        else
                        {
                            ChangeItem         = BandSelectorMenu.Items[pRGBRender.BlueBandIndex + 2] as ToolStripMenuItem;
                            ChangeItem.Checked = true;
                        }
                    }


                    BandSelectorMenu.Show(axTOCControl1, e.x, e.y);
                }
            }
        }
        public ESRI.ArcGIS.Carto.IRasterRenderer Pick(ESRI.ArcGIS.esriSystem.IArray pRenderers, ESRI.ArcGIS.Geodatabase.IRasterDataset pRasterDataset)
        {
            IRasterRenderer    rasterRenderer    = null;
            IRasterRGBRenderer rasterRGBRenderer = null;
            IRasterStretchColorRampRenderer rasterStretchColorRampRenderer = null;

            // Get the renderers
            int Count = pRenderers.Count;
            int i     = 0;

            for (i = 0; i < Count; i++)
            {
                rasterRenderer = (IRasterRenderer)(pRenderers.get_Element(i));

                if (rasterRenderer is IRasterStretchColorRampRenderer)
                {
                    rasterStretchColorRampRenderer = (IRasterStretchColorRampRenderer)rasterRenderer;
                }
                else if (rasterRenderer is IRasterRGBRenderer)
                {
                    rasterRGBRenderer = (IRasterRGBRenderer)rasterRenderer;
                }
            }

            IRasterDataset2       rasterDataset2       = (IRasterDataset2)pRasterDataset;
            IRasterBandCollection rasterBandCollection = (IRasterBandCollection)rasterDataset2;

            if (rasterBandCollection.Count > 5)
            {
                // Use band 4,5 and 3 as red, green and blue
                rasterRenderer = (IRasterRenderer)rasterRGBRenderer;
                rasterRGBRenderer.SetBandIndices(3, 4, 2);
                return((IRasterRenderer)rasterRGBRenderer);
            }
            else // Special stretch
            {
                IRasterBand rasterBand = rasterBandCollection.Item(0);

                bool hasTable = false;
                rasterBand.HasTable(out hasTable);

                if (hasTable == false)
                {
                    // Simply change the color ramp for the stretch renderer
                    //IColor fromColor = new RgbColorClass();
                    //fromColor.RGB = Microsoft.VisualBasic.Information.RGB(255, 200, 50);
                    IColor fromColor = CreateRGBColor(255, 200, 50) as IColor;

                    //IColor toColor = new RgbColorClass();
                    //toColor.RGB = Microsoft.VisualBasic.Information.RGB(180, 125, 0);
                    IColor toColor = CreateRGBColor(180, 125, 0) as IColor;

                    // Create color ramp
                    IAlgorithmicColorRamp algorithmicColorRamp = new AlgorithmicColorRampClass();
                    algorithmicColorRamp.Size      = 255;
                    algorithmicColorRamp.FromColor = fromColor;
                    algorithmicColorRamp.ToColor   = toColor;
                    bool createRamp = false;
                    algorithmicColorRamp.CreateRamp(out createRamp);

                    if (createRamp == true)
                    {
                        rasterRenderer = (IRasterRenderer)rasterStretchColorRampRenderer;
                        rasterStretchColorRampRenderer.BandIndex = 0;
                        rasterStretchColorRampRenderer.ColorRamp = algorithmicColorRamp;
                        return((IRasterRenderer)rasterStretchColorRampRenderer);
                    }
                }
            }

            return(rasterRenderer);
        }
Exemple #5
0
        private void axTOCControl_OnMouseDown(object sender, ITOCControlEvents_OnMouseDownEvent e)
        {
            esriTOCControlItem item  = esriTOCControlItem.esriTOCControlItemNone;
            IBasicMap          map   = null;
            ILayer             layer = null;
            object             other = null;
            object             index = null;

            _tocControl.HitTest(e.x, e.y, ref item, ref map, ref layer, ref other, ref index);
            if (index != null)
            {
                currentIndex = (int)index;
            }
            else
            {
                currentIndex = 0;
            }

            legend       = other;
            currentLayer = layer;
            //确保有项目被选择
            if (item == esriTOCControlItem.esriTOCControlItemMap)
            {
                _tocControl.SelectItem(map, null);
            }
            else if (item == esriTOCControlItem.esriTOCControlItemLayer)
            {
                _tocControl.SelectItem(layer, null);
            }
            //else if (item == esriTOCControlItem.esriTOCControlItemLegendClass)
            //{
            //    _tocControl.SelectItem(other, null);
            //}

            //选择的是Map
            if (item == esriTOCControlItem.esriTOCControlItemMap)
            {
                //将Map信息传递给propertyGrid控件
                MapInfo _mapInfo = new MapInfo(_mapControl.Map);
                //propertyGrid.SelectedObject = _mapInfo;
                //如果是右键点击,弹出菜单
                if (e.button == 2)
                {
                    _mapMenu.PopupMenu(e.x, e.y, _tocControl.hWnd);
                }
            }


            //选择的是 Layer
            if (item == esriTOCControlItem.esriTOCControlItemLayer)
            {
                if (e.button == 2)
                {
                    this._mapControl.CustomProperty = layer;
                    _layerMenu.PopupMenu(e.x, e.y, _tocControl.hWnd);
                }

                /*
                 * //将Layer信息传递给PropertyGrid控件
                 * _mapControl.CustomProperty = layer;
                 * IFeatureLayer pFeatLyr = layer as IFeatureLayer;
                 * if (pFeatLyr == null)
                 *  return;
                 * MyMainGIS.Library.MapLayerInfo _mapLyrInfo = new MyMainGIS.Library.MapLayerInfo(pFeatLyr, _mapControl.Map);
                 * //propertyGrid.SelectedObject = _mapLyrInfo;
                 * //_App.StatusBar.Panels[0].Text = "当前选择图层:" + layer.Name;
                 *
                 * //数据表中出现当前图层数据
                 * //获取有效的图层名称 a_b被解析为a.b
                 * string LayerName = LayerDataTable.getValidFeatureClassName(layer.Name);
                 * //判断当前图层是否存在Selection
                 * IFeatureSelection pFeatureSelection = layer as IFeatureSelection;
                 * if (pFeatureSelection.SelectionSet.Count > 0)
                 * {
                 *  LayerName += "_Selection";
                 *  if (_App.MainDataSet.Tables.Contains(LayerName))
                 *  {
                 *      _App.MainDataSet.Tables.Remove(LayerName);
                 *  }
                 *  DataTable dt = LayerDataTable.CreateDataTable(layer, LayerName);
                 *  _App.MainDataSet.Tables.Add(dt);
                 * }
                 * else
                 * {
                 *  if (!this._App.MainDataSet.Tables.Contains(LayerName))
                 *  {
                 *      DataTable dt = LayerDataTable.CreateDataTable(layer, LayerName);
                 *      _App.MainDataSet.Tables.Add(dt);
                 *  }
                 * }
                 * //bindingSource.DataSource = _App.MainDataSet;
                 * //bindingSource.DataMember = LayerName;
                 * //dataGridView.DataSource = bindingSource;
                 * //DataPanel.Text = "数据表[" + LayerName + "]" + "  记录数:" + _DataSet.Tables[LayerName].Rows.Count.ToString();
                 * //dataGridView.Refresh();
                 */
            }

            //Legend  选择的是遥感影像 修改波段 RGB
            if (item == esriTOCControlItem.esriTOCControlItemLegendClass && e.button == 1)
            {
                IRasterLayer pRasterLayer = layer as IRasterLayer;
                if (pRasterLayer != null && pRasterLayer.BandCount > 1) //判断是影像后排除单波段影像。
                {
                    BandSelectorMenu.Items.Clear();
                    BandSelectorMenu.Items.Add("不可见");
                    ToolStripSeparator separator = new ToolStripSeparator();
                    BandSelectorMenu.Items.Add(separator);

                    string toolItem;
                    for (int i = 0; i < pRasterLayer.BandCount; i++)
                    {
                        toolItem = "Band_" + (i + 1);
                        BandSelectorMenu.Items.Add(toolItem);
                    }
                    IRasterRGBRenderer pRGBRender   = pRasterLayer.Renderer as IRasterRGBRenderer;
                    ToolStripMenuItem  VisuableItem = BandSelectorMenu.Items[0] as ToolStripMenuItem;
                    ToolStripMenuItem  ChangeItem;
                    if ((int)index == 0)
                    {
                        if (pRGBRender.UseRedBand == false)
                        {
                            VisuableItem.Checked = true;
                        }
                        else
                        {
                            ChangeItem         = BandSelectorMenu.Items[pRGBRender.RedBandIndex + 2] as ToolStripMenuItem;
                            ChangeItem.Checked = true;
                        }
                    }
                    if ((int)index == 1)
                    {
                        if (pRGBRender.UseGreenBand == false)
                        {
                            VisuableItem.Checked = true;
                        }
                        else
                        {
                            ChangeItem         = BandSelectorMenu.Items[pRGBRender.GreenBandIndex + 2] as ToolStripMenuItem;
                            ChangeItem.Checked = true;
                        }
                    }
                    if ((int)index == 2)
                    {
                        if (pRGBRender.UseBlueBand == false)
                        {
                            VisuableItem.Checked = true;
                        }
                        else
                        {
                            ChangeItem         = BandSelectorMenu.Items[pRGBRender.BlueBandIndex + 2] as ToolStripMenuItem;
                            ChangeItem.Checked = true;
                        }
                    }


                    BandSelectorMenu.Show(axTOCControl1, e.x, e.y);
                }
            }
        }