private void cboBand_SelectedIndexChanged(object sender, EventArgs e) { if (this.bool_0 && (this.cboBand.SelectedIndex != -1)) { bool flag; IRasterStretchColorRampRenderer renderer = this.irasterStretchColorRampRenderer_0; IRasterRenderer renderer2 = (IRasterRenderer)renderer; renderer.BandIndex = this.cboBand.SelectedIndex; if (this.icolorRamp_0 == null) { IAlgorithmicColorRamp ramp = new AlgorithmicColorRampClass(); IColor color = new RgbColorClass(); (color as IRgbColor).Red = 255; (color as IRgbColor).Red = 0; (color as IRgbColor).Green = 0; (color as IRgbColor).Blue = 0; IColor color2 = new RgbColorClass(); (color2 as IRgbColor).Red = 255; (color2 as IRgbColor).Green = 255; (color2 as IRgbColor).Blue = 255; ramp.FromColor = color; ramp.ToColor = color2; this.icolorRamp_0 = ramp; } this.icolorRamp_0.Size = 255; this.icolorRamp_0.CreateRamp(out flag); renderer.ColorRamp = this.icolorRamp_0; renderer2.Update(); } }
private void cboColorRamp_SelectedIndexChanged(object sender, EventArgs e) { if (this.bool_0) { bool flag; this.icolorRamp_0 = this.cboColorRamp.GetSelectStyleGalleryItem().Item as IColorRamp; (this.irasterStretchColorRampRenderer_0 as IRasterRendererColorRamp).ColorScheme = this.cboColorRamp.Text; IRasterStretchColorRampRenderer renderer = this.irasterStretchColorRampRenderer_0; IRasterRenderer renderer2 = (IRasterRenderer)renderer; if (this.icolorRamp_0 == null) { IAlgorithmicColorRamp ramp = new AlgorithmicColorRampClass(); IColor color = new RgbColorClass(); (color as IRgbColor).Red = 255; (color as IRgbColor).Red = 0; (color as IRgbColor).Green = 0; (color as IRgbColor).Blue = 0; IColor color2 = new RgbColorClass(); (color2 as IRgbColor).Red = 255; (color2 as IRgbColor).Green = 255; (color2 as IRgbColor).Blue = 255; ramp.FromColor = color; ramp.ToColor = color2; this.icolorRamp_0 = ramp; } this.icolorRamp_0.Size = 255; this.icolorRamp_0.CreateRamp(out flag); renderer.ColorRamp = this.icolorRamp_0; renderer2.Update(); } }
private void InitialColorRamp(esriSymbologyStyleClass styleClass) { if (m_pRasterRenderer is IRasterStretchColorRampRenderer) { //得到当前栅格拉伸渲染样式 IRasterStretchColorRampRenderer rasterStrecthcRenderer = m_pRasterRenderer as IRasterStretchColorRampRenderer; //从文件打开渲染库 string sInstall = ClsGDBDataCommon.GetParentPathofExe() + @"Resource\Style\ESRI.ServerStyle"; axSymbologyControl1.LoadStyleFile(sInstall); axSymbologyControl1.StyleClass = esriSymbologyStyleClass.esriStyleClassColorRamps; pSymbolClass = axSymbologyControl1.GetStyleClass(esriSymbologyStyleClass.esriStyleClassColorRamps); IStyleGalleryItem pStyleGalleryItem = new ServerStyleGalleryItem(); pStyleGalleryItem.Item = rasterStrecthcRenderer.ColorRamp; pSymbolClass.AddItem(pStyleGalleryItem, 0); //将渲染库中所有渲染方式添加到列表中 for (int i = 0; i < pSymbolClass.ItemCount; i++) { stdole.IPictureDisp pPicture = pSymbolClass.PreviewItem(pSymbolClass.GetItem(i), cmbColorRamp.Width, cmbColorRamp.Height); Image image = Image.FromHbitmap(new System.IntPtr(pPicture.Handle)); cmbColorRamp.Items.Add(image); } if (pSymbolClass.ItemCount > 0) { pSymbolClass.SelectItem(0); } if (cmbColorRamp.Items.Count > 0) { cmbColorRamp.SelectedIndex = 0; } } }
/// <summary> /// 拉伸渲染raster图层 /// </summary> /// <params name="pRLayer">raster图层</params> /// <remarks></remarks> public void UsingRasterStretchColorRampRender(IRasterLayer pRLayer) { //获得图层 IRaster pRaster = default(IRaster); pRaster = pRLayer.Raster; //创建渲染并转换到栅格渲染 IRasterStretchColorRampRenderer pStretchRen = default(IRasterStretchColorRampRenderer); pStretchRen = new RasterStretchColorRampRenderer(); IRasterRenderer pRasRen = default(IRasterRenderer); pRasRen = (IRasterRenderer)pStretchRen; //栅格渲染赋值和更新 pRasRen.Raster = pRaster; pRasRen.Update(); //定义起止颜色 IRgbColor pFromColor = new RgbColorClass(); pFromColor.Red = 0; pFromColor.Green = 255; pFromColor.Blue = 0; IRgbColor pToColor = new RgbColorClass(); pToColor.Red = 255; pToColor.Green = 0; pToColor.Blue = 0; //创建颜色条 IAlgorithmicColorRamp pRamp = new AlgorithmicColorRamp(); pRamp.Size = 255; pRamp.FromColor = pFromColor; pRamp.ToColor = pToColor; bool bOK; pRamp.CreateRamp(out bOK); //插入颜色条和选择渲染波段 pStretchRen.BandIndex = 0; pStretchRen.ColorRamp = pRamp; //用新的设置更新渲染并赋值给图层 pRasRen.Update(); pRLayer.Renderer = (IRasterRenderer)pStretchRen; //释放内存 pRLayer = null; pRaster = null; pStretchRen = null; pRasRen = null; pRamp = null; pToColor = null; pFromColor = null; }
public void InitRasterRendererObject(List <FieldInfo> pFieldInfo, IRasterRenderer pRenderer) { flag = true; IRasterStretchColorRampRenderer pBreakRenderer = pRenderer as IRasterStretchColorRampRenderer; flag = false; }
public void Apply() { try { IObjectCopy copy = new ObjectCopyClass(); IRasterStretchColorRampRenderer renderer1 = copy.Copy(this.irasterStretchColorRampRenderer_0) as IRasterStretchColorRampRenderer; this.irasterLayer_0.Renderer = this.irasterStretchColorRampRenderer_0 as IRasterRenderer; } catch (Exception) { } }
private void ChangeStrechRender(IRasterLayer rasterLayer /*, double dbMaxValue, double dbMinValue*/) { IRaster pRaster = rasterLayer.Raster; IRasterBandCollection pRasterBandCollection = pRaster as IRasterBandCollection; IRasterBand pRasterBand = pRasterBandCollection.Item(0); if (pRasterBand == null) { return; } bool bFlag = false; pRasterBand.HasStatistics(out bFlag); if (!bFlag) { pRasterBand.ComputeStatsAndHist(); } double dbMaxValue = double.NaN; double dbMinValue = double.NaN; IRasterStatistics pStaticts = pRasterBand.Statistics; dbMaxValue = pStaticts.Maximum; dbMinValue = pStaticts.Minimum; //设置最大最小渲染方式 IRasterStretch pRasterStretch = new RasterStretchColorRampRendererClass(); IRasterStretchMinMax pRasterStretchMinMax = pRasterStretch as IRasterStretchMinMax; pRasterStretchMinMax.UseCustomStretchMinMax = true; pRasterStretchMinMax.CustomStretchMin = dbMinValue; pRasterStretchMinMax.CustomStretchMax = dbMaxValue; pRasterStretch.StretchType = esriRasterStretchTypesEnum.esriRasterStretch_MinimumMaximum; //update IRasterStretchColorRampRenderer pStretchColorRasterRenderer = (IRasterStretchColorRampRenderer)pRasterStretch;; IRasterRenderer pRasterRenderer = pStretchColorRasterRenderer as IRasterRenderer; pRasterRenderer.Raster = rasterLayer.Raster; pRasterLayer.Renderer = pStretchColorRasterRenderer as IRasterRenderer; pRasterRenderer.Update(); }
/// <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); } }
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); }
//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; }
private static void AddSymbolNode(TreeNodeComLayer tnComLayer, object renderer) { int index; LogicBaseTree logicBT = new LogicBaseTree(); ImageCollection treeImages = logicBT.TreeList.StateImageList as ImageCollection; if (renderer is SimpleRenderer) { ISimpleRenderer simpleRenderer = (ISimpleRenderer)renderer; ISymbol symbol = simpleRenderer.Symbol; Image img = ConvertSymbolToImage.Convert(symbol, 16, 16); index = treeImages.Images.Add(img); //img.Save("d:\\" + index + ".JPG"); string label = simpleRenderer.Label; TreeNodeSymbol tnSymbol = new TreeNodeSymbol() { Name = label, CustomValue = symbol }; tnSymbol.ImageIndex = index; tnComLayer.Add(tnSymbol); } else if (renderer is UniqueValueRenderer) { string renderLabel = ""; IUniqueValueRenderer uniqueValueRenderer = renderer as IUniqueValueRenderer; for (int i = 0; i < uniqueValueRenderer.FieldCount - 1; i++) { renderLabel += uniqueValueRenderer.get_Field(i) + " /"; } renderLabel += uniqueValueRenderer.get_Field(uniqueValueRenderer.FieldCount - 1);//FieldCount为地物分类数 //getImage(esriGeometryType.esriGeometryPolygon, Color.White).Save("D:\\111.jpg"); index = treeImages.Images.Add(getImage(esriGeometryType.esriGeometryPolygon, Color.White)); TreeNodeSymbol tnChartNode = new TreeNodeSymbol() { Name = renderLabel, CustomValue = uniqueValueRenderer }; tnChartNode.ImageIndex = index; tnComLayer.Add(tnChartNode); for (int i = 0; i < uniqueValueRenderer.ValueCount; i++)//ValueCount为地物分类下的设施种类数 { ISymbol symbol = uniqueValueRenderer.get_Symbol(uniqueValueRenderer.get_Value(i)); Image img = ConvertSymbolToImage.Convert(symbol, 16, 16); //img.Save("D:\\121121.jpg"); index = treeImages.Images.Add(img); TreeNodeSymbol tnSymbol = new TreeNodeSymbol() { Name = uniqueValueRenderer.get_Label(uniqueValueRenderer.get_Value(i)), CustomValue = symbol }; tnSymbol.ImageIndex = index; tnComLayer.Add(tnSymbol); } if (uniqueValueRenderer.UseDefaultSymbol) { ISymbol symbol = uniqueValueRenderer.DefaultSymbol; Image img = ConvertSymbolToImage.Convert(symbol, 16, 16); index = treeImages.Images.Add(img); TreeNodeSymbol tnSymbol = new TreeNodeSymbol() { Name = uniqueValueRenderer.DefaultLabel, CustomValue = symbol }; tnSymbol.ImageIndex = index; tnComLayer.Add(tnSymbol); } } else if (renderer is IChartRenderer) { IChartRenderer chartRenderer = renderer as IChartRenderer; IRendererFields pFields = chartRenderer as IRendererFields; string renderLabel = ""; for (int i = 0; i < pFields.FieldCount - 1; i++) { renderLabel += pFields.get_FieldAlias(i) + " /"; } renderLabel += pFields.get_FieldAlias(pFields.FieldCount - 1); index = treeImages.Images.Add(getImage(esriGeometryType.esriGeometryPolygon, Color.White)); TreeNodeSymbol tnChartNode = new TreeNodeSymbol() { Name = renderLabel, CustomValue = chartRenderer }; tnChartNode.ImageIndex = index; tnComLayer.Add(tnChartNode); ISymbolArray symArray = chartRenderer.ChartSymbol as ISymbolArray; for (int i = 0; i < symArray.SymbolCount; i++) { ISymbol symbol = symArray.get_Symbol(i); Image img = ConvertSymbolToImage.Convert(symbol, 16, 16); index = treeImages.Images.Add(img); TreeNodeSymbol tnSymbol = new TreeNodeSymbol() { Name = pFields.get_FieldAlias(i), CustomValue = symbol }; tnSymbol.ImageIndex = index; tnComLayer.Add(tnSymbol); } } else if (renderer is IClassBreaksRenderer) { IClassBreaksRenderer classRenderer = renderer as IClassBreaksRenderer; index = treeImages.Images.Add(getImage(esriGeometryType.esriGeometryPolygon, Color.White)); TreeNodeSymbol tnChartNode = new TreeNodeSymbol() { Name = classRenderer.Field, CustomValue = classRenderer }; tnChartNode.ImageIndex = index; tnComLayer.Add(tnChartNode); for (int i = 0; i < classRenderer.BreakCount; i++) { ISymbol symbol = classRenderer.get_Symbol(i); Image img = ConvertSymbolToImage.Convert(symbol, 16, 16); index = treeImages.Images.Add(img); TreeNodeSymbol tnSymbol = new TreeNodeSymbol() { Name = classRenderer.get_Label(i), CustomValue = symbol }; tnSymbol.ImageIndex = index; tnComLayer.Add(tnSymbol); } } else if (renderer is IRasterRenderer) { if (renderer is IRasterClassifyColorRampRenderer) { //MessageBox.Show("IRasterClassifyColorRampRenderer"); } else if (renderer is IRasterUniqueValueRenderer) { //MessageBox.Show("IRasterUniqueValueRenderer"); } else if (renderer is IRasterStretchColorRampRenderer) { ////MessageBox.Show("IRasterStretchColorRampRenderer"); IRasterStretchColorRampRenderer pRSCRR = renderer as IRasterStretchColorRampRenderer; index = treeImages.Images.Add(getImage(esriGeometryType.esriGeometryPolygon, Color.White)); TreeNodeSymbol tnChartNode = new TreeNodeSymbol() { Name = "<Value>", CustomValue = pRSCRR }; tnChartNode.ImageIndex = index; tnComLayer.Add(tnChartNode); if (pRSCRR.ColorRamp.Size >= 3) { IEnumColors colors = pRSCRR.ColorRamp.Colors; colors.Reset(); IColor c = colors.Next(); Color[] cArray = new Color[3]; int count = 0; while (c != null) { count++; if (count == 1) { cArray[0] = Color.FromArgb(c.RGB); } else if (count == pRSCRR.ColorRamp.Size / 2) { cArray[1] = Color.FromArgb(c.RGB); } else if (count == pRSCRR.ColorRamp.Size) { cArray[2] = Color.FromArgb(c.RGB); } c = colors.Next(); } for (int i = 0; i < 3; i++) { Image img = getImage(esriGeometryType.esriGeometryPolygon, cArray[i]); index = treeImages.Images.Add(img); string label = ""; if (i == 0) { label = pRSCRR.LabelLow; } else if (i == 1) { label = pRSCRR.LabelMedium; } else if (i == 2) { label = pRSCRR.LabelHigh; } TreeNodeSymbol tnSymbol = new TreeNodeSymbol() { Name = label, CustomValue = cArray[i] }; tnSymbol.ImageIndex = index; tnComLayer.Add(tnSymbol); } } } else if (renderer is IRasterRGBRenderer) { //MessageBox.Show("IRasterRGBRenderer"); } else if (renderer is IRasterColormap) { //MessageBox.Show("IRasterColormap"); } else { //MessageBox.Show("未处理的IRasterRenderer类型: " + renderer.GetType().FullName); } } else if (renderer is ITinRenderer) { if (renderer is ITinColorRampRenderer) { ////MessageBox.Show("ITinColorRampRenderer"); ITinColorRampRenderer pTCRR = renderer as ITinColorRampRenderer; index = treeImages.Images.Add(getImage(esriGeometryType.esriGeometryPolygon, Color.White)); TreeNodeSymbol tnChartNode = new TreeNodeSymbol() { Name = "Elevation", CustomValue = pTCRR }; tnChartNode.ImageIndex = index; tnComLayer.Add(tnChartNode); for (int i = 0; i < pTCRR.BreakCount; i++) { ISymbol symbol = pTCRR.get_Symbol(i); Image img = ConvertSymbolToImage.Convert(symbol, 16, 16); index = treeImages.Images.Add(img); TreeNodeSymbol tnSymbol = new TreeNodeSymbol() { Name = pTCRR.get_Label(i), CustomValue = symbol }; tnSymbol.ImageIndex = index; tnComLayer.Add(tnSymbol); } } else if (renderer is ITinUniqueValueRenderer) { ////MessageBox.Show("ITinUniqueValueRenderer"); ITinUniqueValueRenderer pTUVR = renderer as ITinUniqueValueRenderer; index = treeImages.Images.Add(getImage(esriGeometryType.esriGeometryPolygon, Color.White)); TreeNodeSymbol tnChartNode = new TreeNodeSymbol() { Name = "Elevation", CustomValue = pTUVR }; tnChartNode.ImageIndex = index; tnComLayer.Add(tnChartNode); for (int i = 0; i < pTUVR.ValueCount; i++) { string val = pTUVR.get_Value(i); ISymbol symbol = pTUVR.get_Symbol(val); Image img = ConvertSymbolToImage.Convert(symbol, 16, 16); index = treeImages.Images.Add(img); TreeNodeSymbol tnSymbol = new TreeNodeSymbol() { Name = pTUVR.get_Label(val), CustomValue = symbol }; tnSymbol.ImageIndex = index; tnComLayer.Add(tnSymbol); } if (pTUVR.UseDefaultSymbol) { ISymbol symbol = pTUVR.DefaultSymbol; Image img = ConvertSymbolToImage.Convert(symbol, 16, 16); index = treeImages.Images.Add(img); TreeNodeSymbol tnSymbol = new TreeNodeSymbol() { Name = pTUVR.DefaultLabel, CustomValue = symbol }; tnSymbol.ImageIndex = index; tnComLayer.Add(tnSymbol); } } else if (renderer is ITinSingleSymbolRenderer) { ////MessageBox.Show("ITinSingleSymbolRenderer"); ITinSingleSymbolRenderer pTSSR = renderer as ITinSingleSymbolRenderer; ISymbol symbol = pTSSR.Symbol; Image img = ConvertSymbolToImage.Convert(symbol, 16, 16); index = treeImages.Images.Add(img); TreeNodeSymbol tnSymbol = new TreeNodeSymbol() { Name = pTSSR.Label, CustomValue = symbol }; tnSymbol.ImageIndex = index; tnComLayer.Add(tnSymbol); } else { //MessageBox.Show("未处理的ITinRenderer类型: " + renderer.GetType().FullName); } } else { //MessageBox.Show("未处理的Renderer类型: " + renderer.GetType().FullName); } }
/// <summary> /// 初始化与拉伸相关控件 /// </summary> private void initstreach() { string sInstall = ClsGDBDataCommon.GetParentPathofExe() + @"Resource\Style\ESRI.ServerStyle"; axSymbologyControl1.LoadStyleFile(sInstall); axSymbologyControl1.StyleClass = esriSymbologyStyleClass.esriStyleClassColorRamps; pSymbolClass = axSymbologyControl1.GetStyleClass(esriSymbologyStyleClass.esriStyleClassColorRamps); pRasterRender = pRLayer.Renderer; pRasterRenderColorRamp = pRasterRender as IRasterRendererColorRamp; //生成色度带 if (pRasterRender is IRasterStretchColorRampRenderer) { IStyleGalleryItem pStyleGalleryItem = new ServerStyleGalleryItem(); pStyleGalleryItem.Item = pRasterRenderColorRamp.ColorRamp; pSymbolClass.AddItem(pStyleGalleryItem, 0); pSymbolClass.SelectItem(0); } for (int i = 0; i < pSymbolClass.get_ItemCount(pSymbolClass.StyleCategory); i++) { stdole.IPictureDisp pPicture = pSymbolClass.PreviewItem(pSymbolClass.GetItem(i), cmbColorRamp.Width, cmbColorRamp.Height); Image image = Image.FromHbitmap(new System.IntPtr(pPicture.Handle)); cmbColorRamp.Items.Add(image); } if (cmbColorRamp.Items.Count > 0) { cmbColorRamp.SelectedIndex = 0; } //判断拉伸方式和拉伸波段 if (pRasterRender is IRasterStretchColorRampRenderer) { pSCRampRender = pRasterRender as IRasterStretchColorRampRenderer; pRasterStretch = pRasterRender as IRasterStretch; int bandindex = pSCRampRender.BandIndex; cmbBand.SelectedIndex = bandindex; if (pRasterStretch.StretchType == esriRasterStretchTypesEnum.esriRasterStretch_Custom) { cmbStreach.SelectedIndex = 1; } else if (pRasterStretch.StretchType == esriRasterStretchTypesEnum.esriRasterStretch_MinimumMaximum) { cmbStreach.SelectedIndex = 2; } else if (pRasterStretch.StretchType == esriRasterStretchTypesEnum.esriRasterStretch_StandardDeviations) { cmbStreach.SelectedIndex = 3; } else if (pRasterStretch.StretchType == esriRasterStretchTypesEnum.esriRasterStretch_HistogramEqualize) { cmbStreach.SelectedIndex = 4; } else { cmbStreach.SelectedIndex = 0; } lblminstr.Text = pSCRampRender.LabelLow; lblmaxstr.Text = pSCRampRender.LabelHigh; txtmin.Text = pSCRampRender.LabelLow; txtmax.Text = pSCRampRender.LabelHigh; if (pRasterStretch.StretchType == esriRasterStretchTypesEnum.esriRasterStretch_MinimumMaximum) { txtmax.Visible = true; txtmin.Visible = false; } } else { cmbBand.SelectedIndex = 0; cmbStreach.SelectedIndex = 0; } isminmax = true; }
private void btnuse_Click(object sender, EventArgs e) { if (treeshow.SelectedIndex == 1) { IRasterRGBRenderer2 pRRGBRenderUse = new RasterRGBRendererClass(); if ((bool)gridsymbol.Rows[0].Cells[0].Value == true) { pRRGBRenderUse.UseRedBand = true; } else { pRRGBRenderUse.UseRedBand = false; } if ((bool)gridsymbol.Rows[1].Cells[0].Value == true) { pRRGBRenderUse.UseGreenBand = true; } else { pRRGBRenderUse.UseGreenBand = false; } if ((bool)gridsymbol.Rows[2].Cells[0].Value == true) { pRRGBRenderUse.UseBlueBand = true; } else { pRRGBRenderUse.UseBlueBand = false; } if ((bool)gridsymbol.Rows[3].Cells[0].Value == true) { pRRGBRenderUse.UseAlphaBand = true; } else { pRRGBRenderUse.UseAlphaBand = false; } pRRGBRenderUse.RedBandIndex = cmbred.SelectedIndex; pRRGBRenderUse.GreenBandIndex = cmbgreen.SelectedIndex; pRRGBRenderUse.BlueBandIndex = cmbblue.SelectedIndex; pRRGBRenderUse.AlphaBandIndex = cmbalpha.SelectedIndex; pRLayer.Renderer = (IRasterRenderer)pRRGBRenderUse; } else { if (pRStretch.StretchType == esriRasterStretchTypesEnum.esriRasterStretch_MinimumMaximum) { if (txtmin.Text == "" && txtmax.Text != "") { MessageBox.Show("请设置拉伸的最小值", "提示", MessageBoxButtons.OK); } else if (txtmax.Text == "" && txtmin.Text != "") { MessageBox.Show("请设置拉伸的最大值", "提示", MessageBoxButtons.OK); } else if (txtmax.Text == "" && txtmin.Text == "") { MessageBox.Show("请设置拉伸的最大值以及最小值", "提示", MessageBoxButtons.OK); } else { pRasterStretchMinMax = (IRasterStretchMinMax)pRStretch; pRasterStretchMinMax.UseCustomStretchMinMax = true; pRasterStretchMinMax.CustomStretchMin = double.Parse(txtmin.Text); pRasterStretchMinMax.CustomStretchMax = double.Parse(txtmax.Text); pRStretch = (IRasterStretch)pRasterStretchMinMax; pRStretch.StretchType = esriRasterStretchTypesEnum.esriRasterStretch_MinimumMaximum; } } if (chkdisplay.Checked == true) { pRStretch.Background = true; pRStretch.BackgroundColor = ClsGDBDataCommon.ColorToIColor(colbackg.SelectedColor); pRStretch.set_BackgroundValues(Convert.ToDouble(backvalue.Text)); } else { pRStretch.Background = false; } IRasterStretchColorRampRenderer pStretchColorRasterRenderer = (IRasterStretchColorRampRenderer)pRStretch;; IRasterRenderer pRasterRenderer = pStretchColorRasterRenderer as IRasterRenderer; pRasterRenderer.Raster = pRLayer.Raster; pRasterRenderer.Update(); pStretchColorRasterRenderer.BandIndex = cmbBand.SelectedIndex; pStretchColorRasterRenderer.ColorRamp = PColorramp as IColorRamp; pRasterRenderer.Update(); pRLayer.Renderer = pStretchColorRasterRenderer as IRasterRenderer; } if (pTocContral.Buddy == pMapContral.Object) { pTocContral.SetBuddyControl(pMapContral); pMapContral.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); pTocContral.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); } else if (pTocContral.Buddy.Equals(pSceneControl.Object)) { pTocContral.SetBuddyControl(pSceneControl); IActiveView pActiveView = pSceneControl.Scene as IActiveView; pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, pRLayer, null); pTocContral.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); } }