private void DrawSymbolsInOrder(IFeatureCursor Cursor, esriDrawPhase drawPhase, IDisplay Display, ITrackCancel trackCancel) { // this sub draws either markers or line symbols from large small so that the smallest symbols will be drawn on top // in graduated symbol case, a cursor is built and parsed n times for n size classes // in proportional symbol case, symbols are sorted and drawn from largest to smallest int iSizeIndex = 0; int iCurrentDrawableSymbolIndex = 0; IFeatureCursor pMyCursor = null; IFeature pFeat = null; IFeatureDraw pFeatDraw = null; bool bContinue = true; ISymbol pSizeSym = null; ISymbol pDrawSym = null; IFeatureCursor pSortedCursor = null; if (m_pSizeRend is IProportionalSymbolRenderer) { // sort pSortedCursor = SortData(Cursor, trackCancel); // draw pFeat = pSortedCursor.NextFeature(); while (pFeat != null) { pDrawSym = GetFeatureSymbol(pFeat); // draw the feature pFeatDraw = pFeat as IFeatureDraw; Display.SetSymbol(pDrawSym); //implementation of IExportSupport BeginFeature(pFeat, Display); pFeatDraw.Draw(drawPhase, Display, pDrawSym, true, null, esriDrawStyle.esriDSNormal); //implementation of IExportSupport GenerateExportInfo(pFeat, Display); EndFeature(Display); // get next feature pFeat = pSortedCursor.NextFeature(); if (trackCancel != null) bContinue = trackCancel.Continue(); } } else { IClassBreaksRenderer pSizeCBRend = null; pSizeCBRend = m_pSizeRend as IClassBreaksRenderer; pMyCursor = Cursor; for (iCurrentDrawableSymbolIndex = (pSizeCBRend.BreakCount - 1); iCurrentDrawableSymbolIndex >= 0; iCurrentDrawableSymbolIndex--) { // do not build a cursor the 1st time because we already have one if (iCurrentDrawableSymbolIndex < (pSizeCBRend.BreakCount - 1)) { // build pMyCursor pMyCursor = m_pFeatureClass.Search(m_pQueryFilter, true); } pFeat = pMyCursor.NextFeature(); while (pFeat != null) { // check to see if we will draw in this pass pSizeSym = m_pSizeRend.get_SymbolByFeature(pFeat); iSizeIndex = GetSymbolIndex(pSizeSym, pSizeCBRend); if (iSizeIndex == iCurrentDrawableSymbolIndex) { // go ahead and draw the symbol // get symbol to draw pDrawSym = GetFeatureSymbol(pFeat); // draw the feature pFeatDraw = pFeat as IFeatureDraw; Display.SetSymbol(pDrawSym); //implementation of IExportSupport BeginFeature(pFeat, Display); pFeatDraw.Draw(drawPhase, Display, pDrawSym, true, null, esriDrawStyle.esriDSNormal); //implementation of IExportSupport GenerateExportInfo(pFeat, Display); EndFeature(Display); if (trackCancel != null) bContinue = trackCancel.Continue(); } pFeat = pMyCursor.NextFeature(); } } // increment DOWN to next symbol size } }
public void Apply() { IObjectCopy copy = new ObjectCopyClass(); IClassBreaksRenderer renderer = copy.Copy(this.iclassBreaksRenderer_0) as IClassBreaksRenderer; this.igeoFeatureLayer_0.Renderer = renderer as IFeatureRenderer; }
private bool CompareRenderers(IFeatureRenderer pRend, IFeatureRenderer pCheckRend) { if (pRend is IClassBreaksRenderer) { // type if (! (pCheckRend is IClassBreaksRenderer)) return false; IClassBreaksRenderer pCBRend = null; pCBRend = pRend as IClassBreaksRenderer; IClassBreaksRenderer pCBCheckRend = null; pCBCheckRend = pCheckRend as IClassBreaksRenderer; // break count if (pCBRend.BreakCount != pCBCheckRend.BreakCount) return false; // field if (pCBRend.Field != pCBCheckRend.Field) return false; } return true; }
public Thematic(IMapControl3 mapControl) { if (mapControl != null) { this._mapControl = mapControl; } _renderer = new ClassBreaksRendererClass(); _classify = new QuantileClass(); _tableHistogram = new BasicTableHistogramClass(); _colorFrom = new HsvColorClass(); _colorTo = new HsvColorClass(); _algClrRamp = new AlgorithmicColorRampClass(); }
public static IFeatureRenderer HideSymbolOfLayer(IGeoFeatureLayer pGeoFeatureLayer) { IFeatureRenderer pFeatureRenderer = pGeoFeatureLayer.Renderer; ISymbol pSymbol = null; if (pFeatureRenderer is ISimpleRenderer) { ISimpleRenderer pSimpleRender = pFeatureRenderer as ISimpleRenderer; pSimpleRender.Symbol = null; //pSymbol = pSimpleRender.Symbol; //SetSymbolNoColor(pGeoFeatureLayer, ref pSymbol); //pSimpleRender.Symbol = pSymbol; return(pSimpleRender as IFeatureRenderer); } else if (pFeatureRenderer is IUniqueValueRenderer) { IUniqueValueRenderer pUniqueRender = pFeatureRenderer as IUniqueValueRenderer; for (int i = 0; i < pUniqueRender.ValueCount; i++) { string sValue = pUniqueRender.get_Value(i); pUniqueRender.set_Symbol(sValue, null); //pSymbol = pUniqueRender.get_Symbol(sValue); //SetSymbolNoColor(pGeoFeatureLayer, ref pSymbol); //pUniqueRender.set_Symbol(sValue, pSymbol); } return(pUniqueRender as IFeatureRenderer); } else if (pFeatureRenderer is IClassBreaksRenderer) { IClassBreaksRenderer pClassRenderer = pFeatureRenderer as IClassBreaksRenderer; for (int i = 0; i < pClassRenderer.BreakCount; i++) { pClassRenderer.set_Symbol(i, null); } pClassRenderer.BackgroundSymbol = null; return(pClassRenderer as IFeatureRenderer); } else if (pFeatureRenderer is IProportionalSymbolRenderer) { } else if (pFeatureRenderer is IChartRenderer) { IChartRenderer pChartRenderer = pFeatureRenderer as IChartRenderer; pChartRenderer.BaseSymbol = null; pChartRenderer.ChartSymbol = null; } return(null); }
private void button2_Click(object sender, System.EventArgs e) { //Create a new ClassBreaksRenderer and set properties m_classBreaksRenderer = new ClassBreaksRenderer(); m_classBreaksRenderer.Field = comboBox1.SelectedItem.ToString(); m_classBreaksRenderer.BreakCount = Convert.ToInt32(textBox1.Text); m_classBreaksRenderer.MinimumBreak = Convert.ToDouble(textBox2.Text); //Calculate the class interval by a simple mean value double interval = (Convert.ToDouble(textBox3.Text) - m_classBreaksRenderer.MinimumBreak) / m_classBreaksRenderer.BreakCount; //Get the color ramp IColorRamp colorRamp = (IColorRamp)m_styleGalleryItem.Item; //Set the size of the color ramp and recreate it colorRamp.Size = Convert.ToInt32(textBox1.Text); bool createRamp; colorRamp.CreateRamp(out createRamp); //Get the enumeration of colors from the color ramp IEnumColors enumColors = colorRamp.Colors; enumColors.Reset(); double currentBreak = m_classBreaksRenderer.MinimumBreak; ISimpleFillSymbol simpleFillSymbol; //Loop through each class break for (int i = 0; i <= m_classBreaksRenderer.BreakCount - 1; i++) { //Set class break m_classBreaksRenderer.set_Break(i, currentBreak); //Create simple fill symbol and set color simpleFillSymbol = new SimpleFillSymbolClass(); simpleFillSymbol.Color = enumColors.Next(); //Add symbol to renderer m_classBreaksRenderer.set_Symbol(i, (ISymbol)simpleFillSymbol); currentBreak += interval; } //Hide the form this.Hide(); }
private void Renderer() { IGeoFeatureLayer pGeoFeatureL = (IGeoFeatureLayer)layer2Symbolize; IFeatureClass featureClass = pGeoFeatureL.FeatureClass; int lfieldNumber = featureClass.FindField(strRendererField); if (lfieldNumber == -1) { MessageBox.Show("Can't find field called " + strRendererField); return; } m_classBreaksRenderer = CreateClassBreaksRenderer(featureClass); if (m_classBreaksRenderer == null) { return; } pGeoFeatureL.Renderer = (IFeatureRenderer)m_classBreaksRenderer; m_activeView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, m_activeView.Extent); }
private void button1_Click(object sender, System.EventArgs e) { //Get the layer selected in the combo box IGeoFeatureLayer geofeaturelayer = null; IMap map = axPageLayoutControl1.ActiveView.FocusMap; for (int i = 0; i <= map.LayerCount - 1; i++) { if (map.get_Layer(i).Name == comboBox1.SelectedItem.ToString()) { geofeaturelayer = (IGeoFeatureLayer)map.get_Layer(i); break; } } if (geofeaturelayer == null) { return; } //Create ClassBreaks form Form2 classBreaksForm = new Form2(); //Get a ClassBreakRenderer that uses the selected ColorRamp IClassBreaksRenderer classBreaksRenderer = classBreaksForm.GetClassBreaksRenderer(geofeaturelayer); if (classBreaksRenderer == null) { return; } //Set the new renderer geofeaturelayer.Renderer = (IFeatureRenderer)classBreaksRenderer; //Trigger contents changed event for TOCControl axPageLayoutControl1.ActiveView.ContentsChanged(); //Refresh the display axPageLayoutControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, geofeaturelayer, null); //Dispose of the form classBreaksForm.Dispose(); }
private void method_1() { if (this.igeoFeatureLayer_0 == null) { this.iclassBreaksRenderer_0 = null; } else { IClassBreaksRenderer pInObject = this.igeoFeatureLayer_0.Renderer as IClassBreaksRenderer; if (pInObject == null) { if (this.iclassBreaksRenderer_0 == null) { this.iclassBreaksRenderer_0 = new ClassBreaksRendererClass(); } } else { IObjectCopy copy = new ObjectCopyClass(); this.iclassBreaksRenderer_0 = copy.Copy(pInObject) as IClassBreaksRenderer; } } }
private int GetSymbolIndex(ISymbol pSym, IClassBreaksRenderer pRend) { // given an input symbol and a renderer, this function returns the index of // the class that the symbol represents in the renderer int i = 0; int iNumBreaks = 0; iNumBreaks = pRend.BreakCount; i = 0; ILegendInfo pLegendInfo = null; pLegendInfo = pRend as ILegendInfo; while (i < iNumBreaks - 1) { if (pLegendInfo.SymbolsAreGraduated) { // compare based on size if (SymbolsAreSameSize(pSym, pRend.get_Symbol(i))) break; } else { // compare based on color if (SymbolsAreSameColor(pSym, pRend.get_Symbol(i))) break; } i = i + 1; } return i; // NOTE: for some reason we can't test that the symbol objects are the same, so above we do quick test for equal properties instead //Do While (i < iNumBreaks - 1) // If pSym Is pRend.Symbol(i) Then Exit Do // i = i + 1 //Loop //Return i // (I think this only works for renderer that does Graduated symbols) //If m_ShapeType = esriGeometryType.esriGeometryPoint Or m_ShapeType = esriGeometryType.esriGeometryPolygon Then // ' determine the symbol index based on marker symbol size // pInMarkerSym = pSym // i = 0 // pClassMarkerSym = pRend.Symbol(0) // dblSize = pClassMarkerSym.Size // Do While (i < iNumBreaks - 1) And (pInMarkerSym.Size > dblSize) // pClassMarkerSym = pRend.Symbol(i) // dblSize = pClassMarkerSym.Size // i = i + 1 // Loop // iReturnVal = i //Else ' m_shapetype = esriGeometryLine // ' determine the symbol index based on line symbol width // pInLineSym = pSym // i = 0 // pClassLineSym = pRend.Symbol(0) // dblWidth = pClassLineSym.Width // Do While (i < iNumBreaks - 1) And (pInLineSym.Width > dblWidth) // pClassLineSym = pRend.Symbol(i) // dblSize = pClassLineSym.Width // i = i + 1 // Loop // iReturnVal = i //End If }
private void method_5(IColorRamp icolorRamp_1, IClassBreaksRenderer iclassBreaksRenderer_1, int int_0, ITable itable_0, string string_0, string string_1, esriDataNormalization esriDataNormalization_0) { try { esriGeometryType esriGeometryAny = esriGeometryType.esriGeometryAny; if (this.igeoFeatureLayer_0.FeatureClass != null) { esriGeometryAny = this.igeoFeatureLayer_0.FeatureClass.ShapeType; } IClassify classify = this.method_2((iclassBreaksRenderer_1 as IClassBreaksUIProperties).Method) as IClassify; if (classify != null) { object obj2; object obj3; bool flag; ITableHistogram histogram = new BasicTableHistogramClass { Field = string_0, Table = itable_0, NormField = string_1 }; (histogram as IDataNormalization).NormalizationType = esriDataNormalization_0; (histogram as IBasicHistogram).GetHistogram(out obj2, out obj3); if (classify is IClassifyMinMax2) { double minimum = (histogram as IStatisticsResults).Minimum; double maximum = (histogram as IStatisticsResults).Maximum; (classify as IClassifyMinMax2).ClassifyMinMax(minimum, maximum, ref int_0); } else if (classify is IDeviationInterval) { (classify as IDeviationInterval).Mean = (histogram as IStatisticsResults).Mean; (classify as IDeviationInterval).StandardDev = (histogram as IStatisticsResults).StandardDeviation; (classify as IDeviationInterval).DeviationInterval = 0.5; classify.Classify(ref int_0); } else { (classify as IClassifyGEN).Classify(obj2, obj3, ref int_0); } iclassBreaksRenderer_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(); switch (esriGeometryAny) { case esriGeometryType.esriGeometryLine: case esriGeometryType.esriGeometryPolyline: { ILineSymbol symbol2 = new SimpleLineSymbolClass { Color = color }; sym = symbol2 as ISymbol; break; } case esriGeometryType.esriGeometryPolygon: { ISimpleFillSymbol symbol3 = new SimpleFillSymbolClass { Color = color, Style = esriSimpleFillStyle.esriSFSSolid }; sym = symbol3 as ISymbol; break; } case esriGeometryType.esriGeometryPoint: case esriGeometryType.esriGeometryMultipoint: { IMarkerSymbol symbol4 = new SimpleMarkerSymbolClass { Color = color }; sym = symbol4 as ISymbol; break; } } iclassBreaksRenderer_1.set_Symbol(i, sym); (iclassBreaksRenderer_1 as IClassBreaksUIProperties).set_LowBreak(i, classBreaks[i]); iclassBreaksRenderer_1.set_Break(i, classBreaks[i + 1]); string label = classBreaks[i].ToString() + " - " + classBreaks[i + 1].ToString(); iclassBreaksRenderer_1.set_Label(i, label); } } } catch (Exception exception) { Logger.Current.Error("", exception, ""); } }
private void button2_Click(object sender, System.EventArgs e) { //Create a new ClassBreaksRenderer and set properties m_classBreaksRenderer = new ClassBreaksRenderer(); m_classBreaksRenderer.Field = comboBox1.SelectedItem.ToString(); m_classBreaksRenderer.BreakCount = Convert.ToInt32(textBox1.Text); m_classBreaksRenderer.MinimumBreak = Convert.ToDouble(textBox2.Text); //Calculate the class interval by a simple mean value double interval = (Convert.ToDouble(textBox3.Text) - m_classBreaksRenderer.MinimumBreak) / m_classBreaksRenderer.BreakCount; //Get the color ramp IColorRamp colorRamp = (IColorRamp) m_styleGalleryItem.Item; //Set the size of the color ramp and recreate it colorRamp.Size = Convert.ToInt32(textBox1.Text); bool createRamp; colorRamp.CreateRamp(out createRamp); //Get the enumeration of colors from the color ramp IEnumColors enumColors = colorRamp.Colors; enumColors.Reset(); double currentBreak = m_classBreaksRenderer.MinimumBreak; ISimpleFillSymbol simpleFillSymbol; //Loop through each class break for (int i = 0; i <= m_classBreaksRenderer.BreakCount-1; i++) { //Set class break m_classBreaksRenderer.set_Break(i,currentBreak); //Create simple fill symbol and set color simpleFillSymbol = new SimpleFillSymbolClass(); simpleFillSymbol.Color = enumColors.Next(); //Add symbol to renderer m_classBreaksRenderer.set_Symbol(i, (ISymbol)simpleFillSymbol); currentBreak += interval; } //Hide the form this.Hide(); }
public void Draw(IFeatureCursor cursor, esriDrawPhase DrawPhase, IDisplay Display, ITrackCancel trackCancel) { string ActiveErrorHandler = null; try { // loop through and draw each feature IFeature pFeat = null; IFeatureRenderer pRend = null; bool bContinue = false; // do not draw features if no display if (Display == null) return; // we can't draw without somewhere to get our base symbols from if (m_pMainRend == null) return; if (m_pSizeRend != null) { // size varies if (m_ShapeType == esriGeometryType.esriGeometryPoint | m_ShapeType == esriGeometryType.esriGeometryPolyline) { if (DrawPhase == esriDrawPhase.esriDPGeography) { // draw symbols in order from large to small DrawSymbolsInOrder(cursor, DrawPhase, Display, trackCancel); } } else if (m_ShapeType == esriGeometryType.esriGeometryPolygon) { if (DrawPhase == esriDrawPhase.esriDPAnnotation) { // draw primary symbology from large to small DrawSymbolsInOrder(cursor, DrawPhase, Display, trackCancel); } else if (DrawPhase == esriDrawPhase.esriDPGeography) { // draw background symbology pFeat = cursor.NextFeature(); bContinue = true; // while there are still more features and drawing has not been cancelled IFillSymbol pBackFillSym; while ((pFeat != null) & (bContinue == true)) { // draw the feature IFeatureDraw pFeatDraw = pFeat as IFeatureDraw; if (m_pSizeRend is IClassBreaksRenderer) { IClassBreaksRenderer pCBRend = m_pSizeRend as IClassBreaksRenderer; pBackFillSym = pCBRend.BackgroundSymbol; } else { IProportionalSymbolRenderer pPropRend = m_pSizeRend as IProportionalSymbolRenderer; pBackFillSym = pPropRend.BackgroundSymbol; } Display.SetSymbol(pBackFillSym as ISymbol); //implementation of IExportSupport BeginFeature(pFeat, Display); pFeatDraw.Draw(DrawPhase, Display, pBackFillSym as ISymbol, true, null, esriDrawStyle.esriDSNormal); //implementation of IExportSupport GenerateExportInfo(pFeat, Display); EndFeature(Display); pFeat = cursor.NextFeature(); if (trackCancel != null) bContinue = trackCancel.Continue(); } } else { Marshal.ThrowExceptionForHR(147500037); //E_FAIL } } } else { // size does not vary if (DrawPhase != esriDrawPhase.esriDPGeography) { Marshal.ThrowExceptionForHR(147500037); //E_FAIL } else DrawSymbols(cursor, DrawPhase, Display, trackCancel); } } catch { } }
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); } }
protected override void OnClick() { // // When the utility is selected, check that we have a currently selected // feature layer with a ClassBreaksRenderer already set. First we get the contents view. // IContentsView ContentsView = null; ContentsView = ArcMap.Document.CurrentContentsView; // // If we have a DisplayView active // object VarSelectedItem = null; IGeoFeatureLayer GeoFeatureLayer = null; IClassBreaksRenderer ClassBreaksRenderer = null; IEnumColors pColors = null; int lngCount = 0; IHsvColor HsvColor = null; IClone ClonedSymbol = null; ISymbol NewSymbol = null; IActiveView ActiveView = null; //AlgorithimcColorRamp contains HSV colors. if (ContentsView is TOCDisplayView) { if (ContentsView.SelectedItem is DBNull) { // // If we don't have anything selected. // MessageBox.Show("SelectedItem is Null C#." + "Select a layer in the Table of Contents.", "No Layer Selected", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } // // Get the selected Item. // VarSelectedItem = ContentsView.SelectedItem; // // Selected Item should implement the IGeoFeatureLayer interface - therefore we // have selected a feature layer with a Renderer property (Note: Other interfaces // also have a Renderer property, which may behave differently. // if (VarSelectedItem is IGeoFeatureLayer) { GeoFeatureLayer = (IGeoFeatureLayer)VarSelectedItem; // // Set the cached property to true, so we can refresh this layer // without refreshing all the layers, when we have changed the symbols. // GeoFeatureLayer.Cached = true; // // Check we have an existing ClassBreaksRenderer. // if (GeoFeatureLayer.Renderer is IClassBreaksRenderer) { ClassBreaksRenderer = (IClassBreaksRenderer)GeoFeatureLayer.Renderer; // // If successful so far we can go ahead and open the Form. This allows the // user to change the properties of the new RandomColorRamp. // frmAlgoColorRamp.m_lngClasses = ClassBreaksRenderer.BreakCount; frmAlgoColorRamp.ShowDialog(); // // Return the selected colors enumeration. pColors = frmAlgoColorRamp.m_enumNewColors; if (pColors == null) { // // User has cancelled the form, or not set a ramp. // //MsgBox("Colors object is empty. Exit Sub") return; } // // Set the new random colors onto the Symbol array of the ClassBreaksRenderer. // pColors.Reset(); // Because you never know if the enumeration has been // iterated before being passed back. int tempFor1 = ClassBreaksRenderer.BreakCount; for (lngCount = 0; lngCount < tempFor1; lngCount++) { // // For each Value in the ClassBreaksRenderer, we clone the existing // Fill symbol (so that all the properties are faithful preserved, // and set its color from our new AlgorithmicColorRamp. // IClone symClone; symClone = (IClone)ClassBreaksRenderer.get_Symbol(lngCount); ClonedSymbol = CloneMe(ref (symClone)); // // Now the ClonedSymbol variable holds a copy of the existing // Symbol, we can change the assigned Color. We set the new // symbol onto the Symbol array of the Renderer. ' // HsvColor = (IHsvColor)pColors.Next(); NewSymbol = SetColorOfUnknownSymbol(ClonedSymbol, HsvColor); if (NewSymbol != null) { ClassBreaksRenderer.set_Symbol(lngCount, NewSymbol); } } // // Refresh the table of contents and the changed layer. // ActiveView = (IActiveView)ArcMap.Document.FocusMap; ActiveView.ContentsChanged(); ArcMap.Document.UpdateContents(); ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, GeoFeatureLayer, null); } } } }
private void Renderer() { IGeoFeatureLayer pGeoFeatureL = (IGeoFeatureLayer)layer2Symbolize; IFeatureClass featureClass = pGeoFeatureL.FeatureClass; //找出rendererField在字段中的编号 int lfieldNumber = featureClass.FindField(strRendererField); if (lfieldNumber == -1) { MessageBox.Show("Can't find field called " + strRendererField); return; } m_classBreaksRenderer = CreateClassBreaksRenderer(featureClass, strClassifyMethod); if (m_classBreaksRenderer == null) return; pGeoFeatureL.Renderer = (IFeatureRenderer)m_classBreaksRenderer; m_activeView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, m_activeView.Extent); m_TOCControl.Update(); }
public void InitRendererObject(List <FieldInfo> pFields, IFeatureRenderer pRenderer, esriSymbologyStyleClass _SymbologyStyleClass) { flag = true; m_SymbologyStyleClass = _SymbologyStyleClass; cmbField.Items.AddRange(pFields.ToArray()); IClassBreaksRenderer pBreakRenderer = pRenderer as IClassBreaksRenderer; cmbField.Text = pBreakRenderer.Field; levelInput.Value = pBreakRenderer.BreakCount; minSizeInput.Value = 1; maxSizeInput.Value = 10; minValueInput.Value = 0; maxValueInput.Value = 100; double minBreak = pBreakRenderer.MinimumBreak; minBreak = Math.Round(minBreak, 4); for (int i = 0; i < pBreakRenderer.BreakCount; i++) { ISymbol pSymbol = pBreakRenderer.get_Symbol(i); string label = pBreakRenderer.get_Label(i); double breakValue = pBreakRenderer.get_Break(i); breakValue = Math.Round(breakValue, 4); double lastBreak = 0; if (i == 0) { lastBreak = minBreak; double size = ModuleCommon.GetSymbolSize(pSymbol); minSizeInput.Value = size; minValueInput.Value = lastBreak; } else { lastBreak = pBreakRenderer.get_Break(i - 1); lastBreak = Math.Round(lastBreak, 4); } if (i == pBreakRenderer.BreakCount - 1) { double size = ModuleCommon.GetSymbolSize(pSymbol); maxSizeInput.Value = size; maxValueInput.Value = breakValue; } listValueItem.SmallImageList.Images.Add("Symbol" + i.ToString(), ModuleCommon.Symbol2Picture(pSymbol, ModuleCommon.ImageWidth, ModuleCommon.ImageHeight));//yjl20110826 add System.Windows.Forms.ListViewItem item = new System.Windows.Forms.ListViewItem(); item.Name = "Item" + i.ToString(); item.Text = ""; item.ImageKey = "Symbol" + i.ToString(); item.Tag = pSymbol; System.Windows.Forms.ListViewItem.ListViewSubItem subItem = new System.Windows.Forms.ListViewItem.ListViewSubItem(); subItem.Name = "Range" + i.ToString(); subItem.Text = (lastBreak == 0 ? "0" : lastBreak.ToString()) + "-" + (breakValue == 0 ? "0" : breakValue.ToString()); subItem.Tag = subItem.Text; item.SubItems.Add(subItem); System.Windows.Forms.ListViewItem.ListViewSubItem subItem1 = new System.Windows.Forms.ListViewItem.ListViewSubItem(); subItem1.Name = "Label" + i.ToString(); subItem1.Text = label; item.SubItems.Add(subItem1); listValueItem.Items.Add(item); } flag = false; if (pBreakRenderer.BreakCount == 0) { levelInput.Value = 5; switch (m_SymbologyStyleClass) { case esriSymbologyStyleClass.esriStyleClassMarkerSymbols: case esriSymbologyStyleClass.esriStyleClassLineSymbols: labelPreviewFore.Tag = ModuleCommon.CreateSymbol(m_SymbologyStyleClass); break; case esriSymbologyStyleClass.esriStyleClassFillSymbols: labelPreviewFore.Tag = ModuleCommon.CreateSymbol(esriSymbologyStyleClass.esriStyleClassMarkerSymbols); break; } } else { labelPreviewFore.Tag = pBreakRenderer.get_Symbol(0); } labelPreviewFore.Image = ModuleCommon.Symbol2Picture(labelPreviewFore.Tag as ISymbol, ModuleCommon.ImageWidth, ModuleCommon.ImageHeight); if (m_SymbologyStyleClass == esriSymbologyStyleClass.esriStyleClassFillSymbols) { if (pBreakRenderer.BackgroundSymbol == null) { labelPreviewBack.Tag = ModuleCommon.CreateSymbol(esriSymbologyStyleClass.esriStyleClassFillSymbols); } else { labelPreviewBack.Tag = pBreakRenderer.BackgroundSymbol as ISymbol; } labelPreviewBack.Visible = true; labelBackCaption.Visible = true; labelPreviewBack.Image = ModuleCommon.Symbol2Picture(labelPreviewBack.Tag as ISymbol, ModuleCommon.ImageWidth, ModuleCommon.ImageHeight); } else { labelPreviewBack.Tag = null; labelPreviewBack.Visible = false; labelBackCaption.Visible = false; } }
public void processFeatureLayer(ILayer lyr) { type = "Vektor"; fillLayerProps(lyr); fillDatalayerProps(lyr); IFeatureLayer flyr = lyr as IFeatureLayer; fillDefQueryProps(flyr); processJoins(flyr); processRelates(flyr); IGeoFeatureLayer gflyr = flyr as IGeoFeatureLayer; if (gflyr.DisplayAnnotation == true) { IAnnotateLayerPropertiesCollection labelPropsColl = gflyr.AnnotationProperties; for (int collIndex = 0; collIndex < labelPropsColl.Count; collIndex++) { IAnnotateLayerProperties annoLayerProps; IElementCollection elCol1; IElementCollection elCol2; labelPropsColl.QueryItem(collIndex, out annoLayerProps, out elCol1, out elCol2); string sql = annoLayerProps.WhereClause; ILabelEngineLayerProperties2 labelEngineProps = (ILabelEngineLayerProperties2)annoLayerProps; string expr = labelEngineProps.Expression; this.label = this.label + sql + "?" + expr + "/"; } } this.label = this.label.TrimEnd('/'); IFeatureRenderer rend = gflyr.Renderer; if (rend is IUniqueValueRenderer) { string felder = ""; IUniqueValueRenderer u = rend as IUniqueValueRenderer; for (int i = 0; i < u.FieldCount; i++) { felder = felder + u.get_Field(i) + "/"; } symbfields = felder.TrimEnd('/') + " (UniqueValueRenderer)"; } else if (rend is IProportionalSymbolRenderer) { IProportionalSymbolRenderer prop = rend as IProportionalSymbolRenderer; symbfields = prop.Field + " (ProportionalSymbolRenderer)"; } else if (rend is IClassBreaksRenderer) { IClassBreaksRenderer cl = rend as IClassBreaksRenderer; symbfields = cl.Field + " (ClassBreaksRenderer)";; } else if (rend is ISimpleRenderer) { symbfields = "kein Feld (SimpleRenderer)"; } else { symbfields = "unbekannter Renderer"; } }
public override void InitRendererObject(IFeatureRenderer _Renderer, esriSymbologyStyleClass _SymbologyStyleClass) { m_SymbologyStyleClass = _SymbologyStyleClass; InitUI(); #region InitObject IClassBreaksRenderer _BreakRenderer = null; if ((_Renderer is IClassBreaksRenderer) == false) { _BreakRenderer = new ClassBreaksRendererClass(); if (m_SymbologyStyleClass == esriSymbologyStyleClass.esriStyleClassFillSymbols) { _BreakRenderer.BackgroundSymbol = ModuleCommon.CreateSymbol(esriSymbologyStyleClass.esriStyleClassFillSymbols) as IFillSymbol; } else { _BreakRenderer.BackgroundSymbol = null; } _BreakRenderer.MinimumBreak = 0; _BreakRenderer.Field = ""; m_Field.DataValue = "<NONE>"; m_SizeLevel.DataValue = 3; m_MinSize.DataValue = 1; m_MaxSize.DataValue = 6; m_MinValue.DataValue = 0; m_MaxValue.DataValue = 100; switch (m_SymbologyStyleClass) { case esriSymbologyStyleClass.esriStyleClassMarkerSymbols: case esriSymbologyStyleClass.esriStyleClassLineSymbols: m_ForeSymbol.DataValue = ModuleCommon.CreateSymbol(m_SymbologyStyleClass); m_BackSymbol = null; break; case esriSymbologyStyleClass.esriStyleClassFillSymbols: m_ForeSymbol.DataValue = ModuleCommon.CreateSymbol(esriSymbologyStyleClass.esriStyleClassMarkerSymbols); m_BackSymbol = new SymbolValue(); m_BackSymbol.ControlName = "BackSymbol"; m_BackSymbol.Caption = "±³¾°·ûºÅ"; m_BackSymbol.ControlWidth = 100; m_BackSymbol.ControlHeight = 40; m_BackSymbol.DataValue = ModuleCommon.CreateSymbol(esriSymbologyStyleClass.esriStyleClassFillSymbols); break; } } else { _BreakRenderer = _Renderer as IClassBreaksRenderer; m_SizeLevel.DataValue = _BreakRenderer.BreakCount; if (_BreakRenderer.BreakCount > 0) { m_MinValue.DataValue = _BreakRenderer.MinimumBreak; m_MaxValue.DataValue = _BreakRenderer.get_Break(m_SizeLevel.DataValue - 1); m_MinSize.DataValue = ModuleCommon.GetSymbolSize(_BreakRenderer.get_Symbol(0)); m_MaxSize.DataValue = ModuleCommon.GetSymbolSize(_BreakRenderer.get_Symbol(m_SizeLevel.DataValue - 1)); m_ForeSymbol.DataValue = _BreakRenderer.get_Symbol(0); } else { m_MinValue.DataValue = 0; m_MaxValue.DataValue = 100; m_MinSize.DataValue = 1; m_MaxSize.DataValue = 6; m_ForeSymbol.DataValue = ModuleCommon.CreateSymbol(m_SymbologyStyleClass); } if (_BreakRenderer.BackgroundSymbol == null) { m_BackSymbol = null; } else { m_BackSymbol = new SymbolValue(); m_BackSymbol.ControlName = "BackSymbol"; m_BackSymbol.Caption = "±³¾°·ûºÅ"; m_BackSymbol.ControlWidth = 100; m_BackSymbol.ControlHeight = 40; m_BackSymbol.DataValue = _BreakRenderer.BackgroundSymbol as ISymbol; } if (_BreakRenderer.Field == "") { m_Field.DataValue = "<NONE>"; } else { m_Field.DataValue = _BreakRenderer.Field; } } #endregion #region InitListView m_ListValueItem.SmallImageList.Images.Clear(); for (int i = 0; i < _BreakRenderer.BreakCount; i++) { ISymbol pSymbol = _BreakRenderer.get_Symbol(i); m_ListValueItem.SmallImageList.Images.Add("Symbol" + i.ToString(), ModuleCommon.Symbol2Picture(pSymbol, 80, 40)); string label = _BreakRenderer.get_Label(i); double range = _BreakRenderer.get_Break(i); System.Windows.Forms.ListViewItem item = new System.Windows.Forms.ListViewItem(); item.Name = "Item" + i.ToString(); item.Text = ""; item.ImageKey = "Symbol" + i.ToString(); item.Tag = pSymbol; string strMinValue = "0"; if (i == 0) { strMinValue = _BreakRenderer.MinimumBreak == 0 ? "0" : _BreakRenderer.MinimumBreak.ToString(".####"); } else { double sMinValue = (double)m_ListValueItem.Items[i - 1].SubItems[1].Tag; strMinValue = sMinValue == 0 ? "0" : sMinValue.ToString(".####"); } System.Windows.Forms.ListViewItem.ListViewSubItem subItem = new System.Windows.Forms.ListViewItem.ListViewSubItem(); subItem.Name = "Range" + i.ToString(); subItem.Text = strMinValue + "-" + (range == 0 ? "0" : range.ToString(".####")); subItem.Tag = range; item.SubItems.Add(subItem); System.Windows.Forms.ListViewItem.ListViewSubItem subItem1 = new System.Windows.Forms.ListViewItem.ListViewSubItem(); subItem1.Name = "Label" + i.ToString(); subItem1.Text = label; item.SubItems.Add(subItem1); m_ListValueItem.Items.Add(item); } #endregion #region InitTree #region Field DevComponents.AdvTree.Node node = new DevComponents.AdvTree.Node(); node.Text = m_Field.Caption; node.Name = "node" + m_Field.ControlName; DevComponents.AdvTree.Cell cell = new DevComponents.AdvTree.Cell(); cell.HostedControl = GetComboBox(m_Field); node.Cells.Add(cell); m_TreeProperty.Nodes.Add(node); #endregion #region SizeLevel node = new DevComponents.AdvTree.Node(); node.Text = m_SizeLevel.Caption; node.Name = "node" + m_SizeLevel.ControlName; cell = new DevComponents.AdvTree.Cell(); cell.HostedControl = GetIntegerInput(m_SizeLevel); node.Cells.Add(cell); m_TreeProperty.Nodes.Add(node); #endregion #region MinSize node = new DevComponents.AdvTree.Node(); node.Text = m_MinSize.Caption; node.Name = "node" + m_MinSize.ControlName; cell = new DevComponents.AdvTree.Cell(); cell.HostedControl = GetDoubleInput(m_MinSize); node.Cells.Add(cell); m_TreeProperty.Nodes.Add(node); #endregion #region MaxSize node = new DevComponents.AdvTree.Node(); node.Text = m_MaxSize.Caption; node.Name = "node" + m_MaxSize.ControlName; cell = new DevComponents.AdvTree.Cell(); cell.HostedControl = GetDoubleInput(m_MaxSize); node.Cells.Add(cell); m_TreeProperty.Nodes.Add(node); #endregion #region MinValue node = new DevComponents.AdvTree.Node(); node.Text = m_MinValue.Caption; node.Name = "node" + m_MinValue.ControlName; cell = new DevComponents.AdvTree.Cell(); cell.HostedControl = GetDoubleInput(m_MinValue); node.Cells.Add(cell); m_TreeProperty.Nodes.Add(node); #endregion #region MaxValue node = new DevComponents.AdvTree.Node(); node.Text = m_MaxValue.Caption; node.Name = "node" + m_MaxValue.ControlName; cell = new DevComponents.AdvTree.Cell(); cell.HostedControl = GetDoubleInput(m_MaxValue); node.Cells.Add(cell); m_TreeProperty.Nodes.Add(node); #endregion #region ForeSymbol node = new DevComponents.AdvTree.Node(); node.Text = m_ForeSymbol.Caption; node.Name = "node" + m_ForeSymbol.ControlName; cell = new DevComponents.AdvTree.Cell(); cell.HostedControl = GetSymbolButton(m_ForeSymbol); node.Cells.Add(cell); m_TreeProperty.Nodes.Add(node); #endregion #region BackSymbol if (m_BackSymbol != null) { node = new DevComponents.AdvTree.Node(); node.Text = m_BackSymbol.Caption; node.Name = "node" + m_BackSymbol.ControlName; cell = new DevComponents.AdvTree.Cell(); cell.HostedControl = GetSymbolButton(m_BackSymbol); node.Cells.Add(cell); m_TreeProperty.Nodes.Add(node); } #endregion #endregion }
public void InitRendererObject(List <FieldInfo> pFields, IFeatureRenderer pRenderer, esriSymbologyStyleClass _SymbologyStyleClass) { flag = true; m_SymbologyStyleClass = _SymbologyStyleClass; cmbField.Items.AddRange(pFields.ToArray()); IClassBreaksRenderer pBreakRenderer = pRenderer as IClassBreaksRenderer; IClassBreaksUIProperties pUIProp = pBreakRenderer as IClassBreaksUIProperties; if (pUIProp.ColorRamp != "") { cmbColorRamp.Text = pUIProp.ColorRamp; } cmbField.Text = pBreakRenderer.Field; levelInput.Value = pBreakRenderer.BreakCount; minValueInput.Value = 0; maxValueInput.Value = 100; double minBreak = pBreakRenderer.MinimumBreak; minBreak = Math.Round(minBreak, 4); for (int i = 0; i < pBreakRenderer.BreakCount; i++) { ISymbol pSymbol = pBreakRenderer.get_Symbol(i); string label = pBreakRenderer.get_Label(i); double breakValue = pBreakRenderer.get_Break(i); breakValue = Math.Round(breakValue, 4); double lastBreak = 0; if (i == 0) { lastBreak = minBreak; minValueInput.Value = lastBreak; } else { lastBreak = pBreakRenderer.get_Break(i - 1); lastBreak = Math.Round(lastBreak, 4); } if (i == pBreakRenderer.BreakCount - 1) { maxValueInput.Value = breakValue; } listValueItem.SmallImageList.Images.Add("Symbol" + i.ToString(), ModuleCommon.Symbol2Picture(pSymbol, ModuleCommon.ImageWidth, ModuleCommon.ImageHeight));//yjl20110826 add System.Windows.Forms.ListViewItem item = new System.Windows.Forms.ListViewItem(); item.Name = "Item" + i.ToString(); item.Text = ""; item.ImageKey = "Symbol" + i.ToString(); item.Tag = pSymbol; System.Windows.Forms.ListViewItem.ListViewSubItem subItem = new System.Windows.Forms.ListViewItem.ListViewSubItem(); subItem.Name = "Range" + i.ToString(); subItem.Text = (lastBreak == 0 ? "0" : lastBreak.ToString()) + "-" + (breakValue == 0 ? "0" : breakValue.ToString()); subItem.Tag = subItem.Text; item.SubItems.Add(subItem); System.Windows.Forms.ListViewItem.ListViewSubItem subItem1 = new System.Windows.Forms.ListViewItem.ListViewSubItem(); subItem1.Name = "Label" + i.ToString(); subItem1.Text = label; item.SubItems.Add(subItem1); listValueItem.Items.Add(item); } if (pBreakRenderer.BreakCount == 0) { levelInput.Value = 5; labelPreviewFore.Tag = ModuleCommon.CreateSymbol(m_SymbologyStyleClass); } else { labelPreviewFore.Tag = pBreakRenderer.get_Symbol(0); } labelPreviewFore.Image = ModuleCommon.Symbol2Picture(labelPreviewFore.Tag as ISymbol, ModuleCommon.ImageWidth, ModuleCommon.ImageHeight); flag = false; }
private void BuildColorMatrix() { try { // On Error GoTo ErrHand IClassBreaksRenderer pCBRend1 = null; IClassBreaksRenderer pCBRend2 = null; pCBRend1 = m_pColorRend1 as IClassBreaksRenderer; pCBRend2 = m_pColorRend2 as IClassBreaksRenderer; int i = 0; int j = 0; IColor pColor1 = null; IColor pColor2 = null; IColor pColor = null; if (m_eColorCombinationMethod == EColorCombinationType.enuCIELabMatrix) { // new (11/5/04) // origin (CIELab average now, but would be better to extend both lines to intersection point, // or average of points where they are closest) pColor1 = GetSymbolColor(pCBRend1.get_Symbol(0)); pColor2 = GetSymbolColor(pCBRend2.get_Symbol(0)); pColor = GetCombinedColor(pColor1, pColor2, EColorCombinationType.enuCIELabColorRamp); IColor pOriginColor = null; pOriginColor = pColor; m_OLEColorMatrix[i, j] = pColor.RGB; // bottom edge (known) int tempFor1 = pCBRend1.BreakCount; for (i = 1; i < tempFor1; i++) { pColor = GetSymbolColor(pCBRend1.get_Symbol(i)); m_OLEColorMatrix[i, 0] = pColor.RGB; } // left edge (known) int tempFor2 = pCBRend2.BreakCount; for (j = 1; j < tempFor2; j++) { pColor = GetSymbolColor(pCBRend2.get_Symbol(j)); m_OLEColorMatrix[0, j] = pColor.RGB; } // remaining values (interpolated) int tempFor3 = pCBRend1.BreakCount; for (i = 1; i < tempFor3; i++) { int tempFor4 = pCBRend2.BreakCount; for (j = 1; j < tempFor4; j++) { pColor1 = GetSymbolColor(pCBRend1.get_Symbol(i)); pColor2 = GetSymbolColor(pCBRend2.get_Symbol(j)); pColor = GetCombinedColor(pColor1, pColor2, EColorCombinationType.enuCIELabMatrix, pOriginColor); m_OLEColorMatrix[i, j] = pColor.RGB; //m_pColorMatrix(i, j) = GetCombinedColor(pColor1, pColor2) } } } else { int tempFor5 = pCBRend1.BreakCount; for (i = 0; i < tempFor5; i++) { int tempFor6 = pCBRend2.BreakCount; for (j = 0; j < tempFor6; j++) { pColor1 = GetSymbolColor(pCBRend1.get_Symbol(i)); pColor2 = GetSymbolColor(pCBRend2.get_Symbol(j)); pColor = GetCombinedColor(pColor1, pColor2, m_eColorCombinationMethod); m_OLEColorMatrix[i, j] = pColor.RGB; //m_pColorMatrix(i, j) = GetCombinedColor(pColor1, pColor2) } } } return; } catch { Console.WriteLine("error"); } }
private void btn_ok_Click(object sender, EventArgs e) { IGeoFeatureLayer pGeoFeatureLayer = (IGeoFeatureLayer)m_FeatureLayer; //Find the selected field in the feature layer IFeatureClass featureClass = m_FeatureLayer.FeatureClass; string pFileName = cbx_Field.SelectedItem.ToString(); if (pFileName == "None") { MessageBox.Show("不可用的字段,请选择其它图层"); return; } IField field = featureClass.Fields.get_Field(featureClass.FindField(pFileName)); //Get a feature cursor ICursor cursor = (ICursor)m_FeatureLayer.Search(null, false); //Create a DataStatistics object and initialize properties IDataStatistics dataStatistics = new DataStatisticsClass(); dataStatistics.Field = field.Name; dataStatistics.Cursor = cursor; //Get the result statistics IStatisticsResults statisticsResults = dataStatistics.Statistics; //Set the values min min and max values m_MinOfField = statisticsResults.Minimum; m_MaxOfField = statisticsResults.Maximum; m_classBreaksRenderer = new ClassBreaksRenderer(); m_classBreaksRenderer.Field = cbx_Field.SelectedItem.ToString(); m_classBreaksRenderer.BreakCount = (int)numUD_TotalClasses.Value; m_classBreaksRenderer.MinimumBreak = m_MinOfField; double interval = (m_MaxOfField - m_MinOfField) / m_classBreaksRenderer.BreakCount; //Get the color ramp IColorRamp colorRamp = (IColorRamp)m_styleGalleryItem.Item; //Set the size of the color ramp and recreate it colorRamp.Size = Convert.ToInt32(numUD_TotalClasses.Value); bool createRamp; colorRamp.CreateRamp(out createRamp); //Get the enumeration of colors from the color ramp IEnumColors enumColors = colorRamp.Colors; enumColors.Reset(); double currentBreak = m_classBreaksRenderer.MinimumBreak; ISimpleFillSymbol simpleFillSymbol; //Loop rhough each class break for (int i = 0; i <= m_classBreaksRenderer.BreakCount - 1; i++) { //Set class break m_classBreaksRenderer.set_Break(i, currentBreak); //Create simple fill symbol and set color simpleFillSymbol = new SimpleFillSymbolClass(); simpleFillSymbol.Color = enumColors.Next(); //Add symbol to renderer m_classBreaksRenderer.set_Symbol(i, (ISymbol)simpleFillSymbol); currentBreak += interval; } pGeoFeatureLayer.Renderer = (IFeatureRenderer)m_classBreaksRenderer; // geofeaturelayer.Renderer = (IFeatureRenderer)classBreaksRenderer; m_MapControl.ActiveView.ContentsChanged(); m_MapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, pGeoFeatureLayer, null); }
private static void RandomizeMarkerColor(IClassBreaksRenderer renderer) { IMarkerSymbol symbol; IRgbColor color = RandomColor(); for (int i = 0; i < renderer.BreakCount; i++) { symbol = renderer.Symbol[i] as IMarkerSymbol; if (symbol != null) { symbol.Color = color; renderer.Symbol[i] = (ISymbol)symbol; } } }