private void FrmSymboloTin_Load(object sender, EventArgs e) { string sInstall = ClsGDBDataCommon.GetParentPathofExe() + @"Resource\Style\ESRI.ServerStyle"; axSymbologyControl1.LoadStyleFile(sInstall); axSymbologyControl1.StyleClass = esriSymbologyStyleClass.esriStyleClassColorRamps; pSymbolClass = axSymbologyControl1.GetStyleClass(esriSymbologyStyleClass.esriStyleClassColorRamps); /* ********************************* * 生成色度带 * *********************************/ for (int i = 0; i < pSymbolClass.get_ItemCount(pSymbolClass.StyleCategory); i++) { stdole.IPictureDisp pPicture = pSymbolClass.PreviewItem(pSymbolClass.GetItem(i), cmbcolor.Width, cmbcolor.Height); Image image = Image.FromHbitmap(new System.IntPtr(pPicture.Handle)); cmbcolor.Items.Add(image); } if (cmbcolor.Items.Count > 0) { cmbcolor.SelectedIndex = 0; } /* ********************************* * 初始化gridview及颜色控件 * *********************************/ if (pTLayer.GetRenderer(0).GetType().Name == "TinFaceRendererClass" || pTLayer.GetRenderer(0).Name == "Faces") { treeshow.SelectedIndex = 1; ITinSingleSymbolRenderer pTinrenderer = pTLayer.GetRenderer(0) as ITinSingleSymbolRenderer; ISimpleFillSymbol psymbol = new SimpleFillSymbolClass(); psymbol = pTinrenderer.Symbol as ISimpleFillSymbol; btncolor.SelectedColor = ClsGDBDataCommon.IColorToColor(psymbol.Color); istrue = true; } else if (pTLayer.GetRenderer(0).Name == "Elevation" || pTLayer.GetRenderer(0).Name == "Edge types") { treeshow.SelectedIndex = 0; btncolor.SelectedColor = System.Drawing.Color.Green; for (int j = 0; j < pTLayer.RendererCount; j++) { if (pTLayer.GetRenderer(j).Name == "Elevation") { ptinColorRampRenderer = pTLayer.GetRenderer(j) as ITinColorRampRenderer; break; } } cmbclasses.SelectedIndex = ptinColorRampRenderer.BreakCount - 1; initialupdatagrid(); } }
private void btnok_Click(object sender, EventArgs e) { if (treeshow.SelectedIndex == 1) { ITinRenderer pRenderNew = new TinFaceRenderer() as ITinRenderer; ITinSingleSymbolRenderer pUVRenderer = pRenderNew as ITinSingleSymbolRenderer; ISimpleFillSymbol pSymbol = new SimpleFillSymbolClass(); pSymbol.Color = ClsGDBDataCommon.ColorToIColor(btncolor.SelectedColor); pUVRenderer.Symbol = pSymbol as ISymbol; pTLayer.ClearRenderers(); pTLayer.InsertRenderer(pRenderNew, 0); pTocContral.SetBuddyControl(pMapContral); pTocContral.Refresh(); pMapContral.Refresh(); if (bar3.SelectedDockTab == 2) { IActiveView pActiveView = pSceneControl.Scene as IActiveView; pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, pTLayer, null); } this.Close(); } else { ITinRenderer pTinRenderer = new TinElevationRenderer() as ITinRenderer; //设置样式 if (pTinRenderer is ITinColorRampRenderer) { if (pTinRenderer.Name == "Elevation") { if (lowbreak.Count > 0) { int ClassCount = int.Parse(cmbclasses.SelectedItem.ToString()); ITinAdvanced pTinAdv = pTLayer.Dataset as ITinAdvanced; ITinColorRampRenderer pTinColorRampRenderer = pTinRenderer as ITinColorRampRenderer; IClassBreaksUIProperties pClassBreaksUIProperties = pTinRenderer as IClassBreaksUIProperties; INumberFormat pNumberFormat = pClassBreaksUIProperties.NumberFormat; pTinColorRampRenderer.MinimumBreak = lowbreak[0]; pTinColorRampRenderer.BreakCount = int.Parse(cmbclasses.SelectedItem.ToString()); ISimpleFillSymbol pSymbol = null; for (int j = 0; j < pTinColorRampRenderer.BreakCount; j++) { pClassBreaksUIProperties.set_LowBreak(j, lowbreak[j]); pTinColorRampRenderer.set_Break(j, highbreak[j]); //用于图层控制中分级标示显示 pTinColorRampRenderer.set_Label(ClassCount - j - 1, datagridsymbol.Rows[j].Cells[2].Value.ToString()); pSymbol = new SimpleFillSymbolClass(); pSymbol.Color = ClsGDBDataCommon.ColorToIColor(datagridsymbol.Rows[j].Cells[0].Style.BackColor); pTinColorRampRenderer.set_Symbol(ClassCount - j - 1, pSymbol as ISymbol); } pTLayer.ClearRenderers(); (pTinColorRampRenderer as ITinRenderer).Visible = true; pTLayer.InsertRenderer(pTinColorRampRenderer as ITinRenderer, 0);//插入一个渲染模型 pTocContral.SetBuddyControl(pMapContral); pTocContral.Refresh(); pMapContral.Refresh(); if (bar3.SelectedDockTab == 2) { IActiveView pActiveView = pSceneControl.Scene as IActiveView; pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, pTLayer, null); } this.Close(); } } } } }
private void method_3(IColorRamp icolorRamp_1, ITinColorRampRenderer itinColorRampRenderer_1, int int_0, ITin itin_0) { IClassify classify = this.method_2((itinColorRampRenderer_1 as IClassBreaksUIProperties).Method) as IClassify; if (classify != null) { bool flag; if (classify is IClassifyMinMax2) { ITinAdvanced dataset = this.itinLayer_0.Dataset as ITinAdvanced; double zMin = dataset.Extent.ZMin; double zMax = dataset.Extent.ZMax; (classify as IClassifyMinMax2).ClassifyMinMax(zMin, zMax, ref int_0); } else if (!(classify is IDeviationInterval)) { } itinColorRampRenderer_1.BreakCount = int_0; this.bool_0 = false; this.cboClassifyNum.SelectedIndex = int_0 - 1; this.bool_0 = true; double[] classBreaks = (double[])classify.ClassBreaks; if (classBreaks.Length == 0) { icolorRamp_1.Size = 5; } else { icolorRamp_1.Size = classBreaks.Length; } icolorRamp_1.CreateRamp(out flag); IEnumColors colors = icolorRamp_1.Colors; ISymbol sym = null; for (int i = 0; i < (classBreaks.Length - 1); i++) { IColor color = colors.Next(); if ((itinColorRampRenderer_1 as ITinRenderer).Name == "Elevation") { ISimpleFillSymbol symbol2 = new SimpleFillSymbolClass { Color = color, Style = esriSimpleFillStyle.esriSFSSolid }; sym = symbol2 as ISymbol; } else if ((itinColorRampRenderer_1 as ITinRenderer).Name == "Node elevation") { IMarkerSymbol symbol3 = new SimpleMarkerSymbolClass { Color = color }; sym = symbol3 as ISymbol; } itinColorRampRenderer_1.set_Symbol(i, sym); (itinColorRampRenderer_1 as IClassBreaksUIProperties).set_LowBreak(i, classBreaks[i]); itinColorRampRenderer_1.set_Break(i, classBreaks[i + 1]); string label = classBreaks[i].ToString() + " - " + classBreaks[i + 1].ToString(); itinColorRampRenderer_1.set_Label(i, label); } } }
private void method_0(IClassify iclassify_0, ITinColorRampRenderer itinColorRampRenderer_0, int int_0, ITin itin_1) { bool flag; IRandomColorRamp ramp = new RandomColorRampClass { StartHue = 40, EndHue = 120, MinValue = 65, MaxValue = 90, MinSaturation = 25, MaxSaturation = 45, Size = 5, Seed = 23 }; IColorRamp ramp2 = ramp; if (iclassify_0 is IClassifyMinMax2) { ITinAdvanced advanced = itin_1 as ITinAdvanced; double zMin = advanced.Extent.ZMin; double zMax = advanced.Extent.ZMax; (iclassify_0 as IClassifyMinMax2).ClassifyMinMax(zMin, zMax, ref int_0); } else if (!(iclassify_0 is IDeviationInterval)) { } itinColorRampRenderer_0.BreakCount = int_0; double[] classBreaks = (double[])iclassify_0.ClassBreaks; if (classBreaks.Length == 0) { ramp2.Size = 5; } else { ramp2.Size = classBreaks.Length; } ramp2.CreateRamp(out flag); IEnumColors colors = ramp2.Colors; ISymbol sym = null; for (int i = 0; i < (classBreaks.Length - 1); i++) { IColor color = colors.Next(); if ((itinColorRampRenderer_0 as ITinRenderer).Name == "Elevation") { ISimpleFillSymbol symbol2 = new SimpleFillSymbolClass { Color = color, Style = esriSimpleFillStyle.esriSFSSolid }; sym = symbol2 as ISymbol; } else if ((itinColorRampRenderer_0 as ITinRenderer).Name == "Node elevation") { IMarkerSymbol symbol3 = new SimpleMarkerSymbolClass { Color = color }; sym = symbol3 as ISymbol; } itinColorRampRenderer_0.set_Symbol(i, sym); (itinColorRampRenderer_0 as IClassBreaksUIProperties).set_LowBreak(i, classBreaks[i]); itinColorRampRenderer_0.set_Break(i, classBreaks[i + 1]); string label = classBreaks[i].ToString() + " - " + classBreaks[i + 1].ToString(); itinColorRampRenderer_0.set_Label(i, label); } }
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); } }