⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 很好的带有编辑功能、量算功能。可在地图上进行距离、面积、角度测量
💻 CS
📖 第 1 页 / 共 5 页
字号:
			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) axMap1.get_Layer(2) ;
			m_pGeoFeatureLayer.Renderer =(IFeatureRenderer) pClassBreaksRenderer;
			
			axMap1.ActiveView.Refresh(); 
			axTOC1.SetBuddyControl(axMap1.Object ) ;
			axTOC1.Refresh();
		}

		private void m_Theme_UniqueValue_Click(object sender, System.EventArgs e)
		{
			ITable pTable ;
			int fieldNumber ;			
			string strFieldName = "STATE_NAME";

			pTable = (ITable) axMap1.get_Layer(2) ;
			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) axMap1.get_Layer(2);
			m_pGeoFeatureLayer.Renderer =(IFeatureRenderer) pUniqueValueRenderer;
			
			axMap1.ActiveView.Refresh(); 
			axTOC1.SetBuddyControl(axMap1.Object ) ;
			axTOC1.Refresh();
		}

		private void m_Theme_DotDensity_Click(object sender, System.EventArgs e)
		{
			IDotDensityRenderer pDotDensityRenderer = new DotDensityRendererClass();
			IRendererFields pRendererFields =(IRendererFields) pDotDensityRenderer;
			pRendererFields.AddField( "POP1990","1990年人口");

			IDotDensityFillSymbol pDotDensityFillSymbol = new DotDensityFillSymbolClass();
			pDotDensityFillSymbol.DotSize = 1;
			pDotDensityFillSymbol.Color = GetRGBColor(0, 0, 0);
			pDotDensityFillSymbol.BackgroundColor = GetRGBColor(239, 228, 190);  // color of tan
  
			ISymbolArray pSymbolArray =(ISymbolArray) pDotDensityFillSymbol;
			ISimpleMarkerSymbol pMarkerSymbol = new SimpleMarkerSymbolClass();

			pMarkerSymbol.Style =esriSimpleMarkerStyle.esriSMSCircle ;
			pMarkerSymbol.Size = 3;
			pMarkerSymbol.Color = GetRGBColor(0, 0, 0);  // Black
			pSymbolArray.AddSymbol((ISymbol) pMarkerSymbol);
  
			pDotDensityRenderer.DotDensitySymbol = pDotDensityFillSymbol;
			pDotDensityRenderer.DotValue = 200000;

			IGeoFeatureLayer m_pGeoFeatureLayer =(IGeoFeatureLayer) axMap1.get_Layer(2);
			m_pGeoFeatureLayer.Renderer =(IFeatureRenderer) pDotDensityRenderer;
			
			axMap1.ActiveView.Refresh(); 
			axTOC1.SetBuddyControl(axMap1.Object ) ;
			axTOC1.Refresh();
		}
		
		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 toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
		{
			switch(toolBar1.Buttons.IndexOf( e.Button))
			{
				case 0:  //print
					m_File_Print_Click(this, null);
					break;
				case 1:  //exit
					m_File_Exit_Click(this, null);
					break;
				case 3: //select
					m_View_Select_Click(this, null);
					RefreshToolButtons(3);
					break;
				case 4: //ZoomIn
					m_View_ZoomIn_Click(this, null);
					RefreshToolButtons(4);
					break;
				case 5: //ZoomOut
					m_View_ZoomOut_Click(this, null);
					RefreshToolButtons(5);
					break;
				case 6: //Pan
					m_View_Pan_Click(this, null);
					RefreshToolButtons(6);
					break;
				case 7: //FullExtent
					m_View_EntireView_Click(this, null);
					break;
				case 9: //Length
					m_Tool_Length_Click(this, null);
					RefreshToolButtons(9);
					break;
				case 10: //Area
					m_Tool_Area_Click(this, null);
					RefreshToolButtons(10);
					break;
				case 11: //Angle
					m_Tool_Angle_Click(this, null);
					RefreshToolButtons(11);
					break;
				case 12: //Refresh
					m_Tool_Refresh_Click(this, null);
					break;
				case 14: //newPoint
					m_Edit_New_Point_Click(this, null);
					RefreshToolButtons(14);
					break;
				case 15: //newLine
					m_Edit_New_Line_Click(this, null);
					RefreshToolButtons(15);
					break;
				case 16: //NewPolygon
					m_Edit_New_Area_Click(this, null);
					RefreshToolButtons(16);
					break;		
			}
		}
		
		private void RefreshToolButtons(int index)
		{
			for(int i = 0; i< toolBar1.Buttons.Count; i++)
			{
				if (toolBar1.Buttons.IndexOf ( toolBar1.Buttons[i]) != index)
				{
					toolBar1.Buttons[i].Pushed = false;
				}
			}

		}

		private void m_Edit_New_Point_Click(object sender, System.EventArgs e)
		{
			iMapAction = 8;
			statusBarPanel1.Text ="新建点";

			ITool obj = new ControlsMapPanToolClass() ;
			axMap1.CurrentTool = obj;
            RefreshToolButtons(100);
		
			if (pEditor.InEdit()) pEditor.StopEditing(); 
 
			pEditor.CurrentLayer = axMap1.get_Layer(0);
			pEditor.StartEditing(); 
		}

		private void m_Edit_New_Line_Click(object sender, System.EventArgs e)
		{
			iMapAction = 8;	
			statusBarPanel1.Text ="新建线";

			ITool obj = new ControlsMapPanToolClass() ;
			axMap1.CurrentTool = obj;	
			RefreshToolButtons(100);

			if (pEditor.InEdit()) pEditor.StopEditing(); 
 
			pEditor.CurrentLayer = axMap1.get_Layer(1);
			pEditor.StartEditing(); 
		}

		private void m_Edit_New_Area_Click(object sender, System.EventArgs e)
		{
			iMapAction = 8;	
			statusBarPanel1.Text ="新建面";

			ITool obj = new ControlsMapPanToolClass() ;
			axMap1.CurrentTool = obj;
			RefreshToolButtons(100);
	
			if (pEditor.InEdit()) pEditor.StopEditing(); 
 
			pEditor.CurrentLayer = axMap1.get_Layer(2);
			pEditor.StartEditing(); 
		}

		private void m_Delete_Point_Click(object sender, System.EventArgs e)
		{
			iMapAction = 9;	
			statusBarPanel1.Text ="删除点";

			ITool obj = new ControlsMapPanToolClass() ;
			axMap1.CurrentTool = obj;
			RefreshToolButtons(100);
	
			if (pEditor.InEdit()) pEditor.StopEditing(); 
 
			pEditor.CurrentLayer = axMap1.get_Layer(0);
			pEditor.StartEditing(); 		
		}

		private void m_Delete_Line_Click(object sender, System.EventArgs e)
		{
			iMapAction = 9;	
			statusBarPanel1.Text ="删除线";

			ITool obj = new ControlsMapPanToolClass() ;
			axMap1.CurrentTool = obj;
			RefreshToolButtons(100);
	
			if (pEditor.InEdit()) pEditor.StopEditing(); 
 
			pEditor.CurrentLayer = axMap1.get_Layer(1);
			pEditor.StartEditing(); 		
		}

		private void m_Delete_Area_Click(object sender, System.EventArgs e)
		{
			iMapAction = 9;	
			statusBarPanel1.Text ="删除面";

			ITool obj = new ControlsMapPanToolClass() ;
			axMap1.CurrentTool = obj;
			RefreshToolButtons(100);
	
			if (pEditor.InEdit()) pEditor.StopEditing(); 
 
			pEditor.CurrentLayer = axMap1.get_Layer(2);
			pEditor.StartEditing(); 				
		}

		private void m_Edit_Move_Point_Click(object sender, System.EventArgs e)
		{
			iMapAction = 10;	
			statusBarPanel1.Text ="移动点";

			ITool obj = new ControlsMapPanToolClass() ;
			axMap1.CurrentTool = obj;
			RefreshToolButtons(100);
	
			if (pEditor.InEdit()) pEditor.StopEditing(); 
 
			pEditor.CurrentLayer = axMap1.get_Layer(0);
			pEditor.StartEditing(); 				
		}

		private void m_Edit_Move_Line_Click(object sender, System.EventArgs e)
		{
			iMapAction = 10;	
			statusBarPanel1.Text ="移动线";

			ITool obj = new ControlsMapPanToolClass() ;
			axMap1.CurrentTool = obj;
			RefreshToolButtons(100);
	
			if (pEditor.InEdit()) pEditor.StopEditing(); 
 
			pEditor.CurrentLayer = axMap1.get_Layer(1);
			pEditor.StartEditing(); 
		}

		private void m_Edit_Move_Area_Click(object sender, System.EventArgs e)
		{
			iMapAction = 10;	
			statusBarPanel1.Text ="移动面";

			ITool obj = new ControlsMapPanToolClass() ;
			axMap1.CurrentTool = obj;
			RefreshToolButtons(100);
	
			if (pEditor.InEdit()) pEditor.StopEditing(); 
 
			pEditor.CurrentLayer = axMap1.get_Layer(2);
			pEditor.StartEditing(); 
		}
			
		private void m_Edit_Vertex_Line_Click(object sender, System.EventArgs e)
		{
			iMapAction = 12;	
			statusBarPanel1.Text ="编辑线";

			ITool obj = new ControlsMapPanToolClass() ;
			axMap1.CurrentTool = obj;
			RefreshToolButtons(100);
	
			if (pEditor.InEdit()) pEditor.StopEditing(); 
 
			pEditor.CurrentLayer = axMap1.get_Layer(1);
			pEditor.StartEditing(); 
		}

		private void m_Edit_Vertex_Area_Click(object sender, System.EventArgs e)
		{
			iMapAction = 12;	
			statusBarPanel1.Text ="编辑面";

			ITool obj = new ControlsMapPanToolClass() ;
			axMap1.CurrentTool = obj;
			RefreshToolButtons(100);
	
			if (

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -