ArcEngine c#开发 专题图制作 (零碎)

来源:互联网 发布:log4j不打印sql语句 编辑:程序博客网 时间:2024/06/06 08:52
先写一个RGB颜色构造器。

private IRgbColor GetRGBColor(int pRed, int pGreen, int pBlue) { IRgbColor pRGB; pRGB = new RgbColorClass(); pRGB.Red = pRed; pRGB.Green = pGreen; pRGB.Blue = pBlue; pRGB.UseWindowsDithering = true; return pRGB; }


柱状专题图

private void 柱状专题图ToolStripMenuItem_Click(object sender, EventArgs e) { IGeoFeatureLayer layer; try { IChartRenderer pChartRenderer = new ChartRendererClass() as IChartRenderer; IRendererFields pRendererField = (IRendererFields)pChartRenderer; pRendererField.AddField("AGE_UNDER5", "AGE_UNDER5"); pRendererField.AddField("AGE_5_17", "AGE_5_17"); pRendererField.AddField("AGE_18_64", "AGE_18_64"); pRendererField.AddField("AGE_65_UP", "AGE_65_UP"); IBarChartSymbol pBarChartSymbol = (IBarChartSymbol)new BarChartSymbolClass(); pBarChartSymbol.Width = 6; IChartSymbol pChartSymbol = (IChartSymbol)pBarChartSymbol; pChartSymbol.MaxValue = 5000000; IMarkerSymbol pMarkerSymbol = (IMarkerSymbol)pBarChartSymbol; pMarkerSymbol.Size = 25; ISymbolArray pSymbolArray = (ISymbolArray)pBarChartSymbol; IFillSymbol pFillSymbol; pFillSymbol = (IFillSymbol)new SimpleFillSymbolClass(); //under 5 pFillSymbol.Color = GetRGBColor(213, 212, 252); pSymbolArray.AddSymbol((ISymbol)pFillSymbol); pFillSymbol = (IFillSymbol)new SimpleFillSymbolClass(); //5-17 pFillSymbol.Color = GetRGBColor(193, 252, 179); pSymbolArray.AddSymbol((ISymbol)pFillSymbol); pFillSymbol = (IFillSymbol)new SimpleFillSymbolClass(); //18-64 pFillSymbol.Color = GetRGBColor(213, 212, 252); pSymbolArray.AddSymbol((ISymbol)pFillSymbol); pFillSymbol = (IFillSymbol)new SimpleFillSymbolClass(); //65-up pFillSymbol.Color = GetRGBColor(193, 252, 179); pSymbolArray.AddSymbol((ISymbol)pFillSymbol); pFillSymbol = (IFillSymbol)new SimpleFillSymbolClass(); pFillSymbol.Color = GetRGBColor(239, 228, 190); pChartRenderer.ChartSymbol = (IChartSymbol)pBarChartSymbol; pChartRenderer.BaseSymbol = (ISymbol)pFillSymbol; pChartRenderer.Label = "Population"; pChartRenderer.UseOverposter = false; layer = (IGeoFeatureLayer)axMapControl1.get_Layer(2); layer.Renderer = (IFeatureRenderer)pChartRenderer; axMapControl1.ActiveView.Refresh(); axTOCControl1.SetBuddyControl(axMapControl1.Object); axTOCControl1.Refresh(); } catch (Exception err) { Console.WriteLine(err.Message); } }

分段专题图

private void 分段专题图ToolStripMenuItem_Click(object sender, EventArgs e) { double[] Classes = { 9920007, 19840014, 29760021 }; int ClassesCount = 3; //int numDesiredClasses = 3; //pClassify.Classify(ref numDesiredClasses); //Classes =(double[]) pClassify.ClassBreaks; //ClassesCount = Classes.GetUpperBound(1); IClassBreaksRenderer pClassBreaksRenderer = new ClassBreaksRendererClass(); pClassBreaksRenderer.Field = "POP1990"; pClassBreaksRenderer.BreakCount = ClassesCount; pClassBreaksRenderer.SortClassesAscending = true; IHsvColor pFromColor = new HsvColorClass(); pFromColor.Hue = 60; // Yellow; pFromColor.Saturation = 100; pFromColor.Value = 96; IHsvColor pToColor = new HsvColorClass(); pToColor.Hue = 0; pToColor.Saturation = 100; pToColor.Value = 96; bool ok; IAlgorithmicColorRamp pRamp = new AlgorithmicColorRampClass(); pRamp.Algorithm = esriColorRampAlgorithm.esriHSVAlgorithm; pRamp.FromColor = pFromColor; pRamp.ToColor = pToColor; pRamp.Size = ClassesCount; pRamp.CreateRamp(out ok); IEnumColors pEnumColors = pRamp.Colors; IColor pColor; ISimpleFillSymbol pFillSymbol; for (int breakIndex = 0; breakIndex < ClassesCount; breakIndex++) { pColor = pEnumColors.Next(); pFillSymbol = new SimpleFillSymbolClass(); pFillSymbol.Color = pColor; pFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid; pClassBreaksRenderer.set_Symbol(breakIndex, (ISymbol)pFillSymbol); pClassBreaksRenderer.set_Break(breakIndex, Classes[breakIndex]); } IGeoFeatureLayer m_pGeoFeatureLayer = (IGeoFeatureLayer)axMapControl1.get_Layer(2); m_pGeoFeatureLayer.Renderer = (IFeatureRenderer)pClassBreaksRenderer; axMapControl1.ActiveView.Refresh(); axTOCControl1.SetBuddyControl(axMapControl1.Object); axTOCControl1.Refresh(); }

单值专题图

private void 单值专题图ToolStripMenuItem_Click(object sender, EventArgs e) { ITable pTable; int fieldNumber; string strFieldName = "NAME"; pTable = (ITable)axMapControl1.get_Layer(0); fieldNumber = pTable.FindField(strFieldName); if (fieldNumber == -1) { MessageBox.Show("Can't find field called STATE_NAME"); return; } IUniqueValueRenderer pUniqueValueRenderer = new UniqueValueRendererClass(); pUniqueValueRenderer.FieldCount = 1; pUniqueValueRenderer.set_Field(0, strFieldName); object codeValue; bool ok; IRandomColorRamp pColorRamp = new RandomColorRampClass(); pColorRamp.StartHue = 0; pColorRamp.MinValue = 99; pColorRamp.MinSaturation = 15; pColorRamp.EndHue = 360; pColorRamp.MaxValue = 100; pColorRamp.MaxSaturation = 30; pColorRamp.Size = 100; pColorRamp.CreateRamp(out ok); IEnumColors pEnumRamp = pColorRamp.Colors; IQueryFilter pQueryFilter = new QueryFilterClass(); pQueryFilter.AddField(strFieldName); ICursor pCursor = pTable.Search(pQueryFilter, true); IRow pNextRow = pCursor.NextRow(); IFillSymbol pSym; IColor pNextUniqueColor; if (pNextRow != null) { int fieldIndex = pNextRow.Fields.FindField(strFieldName); do { codeValue = pNextRow.get_Value(fieldIndex); pNextUniqueColor = pEnumRamp.Next(); if (pNextUniqueColor == null) { pEnumRamp.Reset(); pNextUniqueColor = pEnumRamp.Next(); } pSym = new SimpleFillSymbolClass(); pSym.Color = pNextUniqueColor; pUniqueValueRenderer.AddValue(codeValue.ToString(), "STATE_NAME", (ISymbol)pSym); pNextRow = pCursor.NextRow(); } while (pNextRow != null); } IGeoFeatureLayer m_pGeoFeatureLayer = (IGeoFeatureLayer)axMapControl1.get_Layer(0); m_pGeoFeatureLayer.Renderer = (IFeatureRenderer)pUniqueValueRenderer; axMapControl1.ActiveView.Refresh(); axTOCControl1.SetBuddyControl(axMapControl1.Object); axTOCControl1.Refresh(); }


原创粉丝点击