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

📄 form1.cs

📁 提供了大量初学CSharp的示例
💻 CS
📖 第 1 页 / 共 3 页
字号:
			}
			else if (this.radioButton2.Checked)
			{
				ESRI.MapObjects2.Core.Line line = this.axMap1.TrackLine();
				ESRI.MapObjects2.Core.GeoEvent evtLine = this.axMap1.TrackingLayer.AddEvent(line, 0);
				return line;
			}
			return null;
		}*/

		private void checkBox1_Click(object sender, System.EventArgs e)
		{
			if (this.checkBox1.Checked) 
				this.timer1.Start();
			else
				this.timer1.Stop();
		}

		private void timer1_Tick(object sender, System.EventArgs e)
		{
			System.Random rnd = new System.Random();
			double maxDist = this.axMap1.Extent.Height / 2000;
			long nEventCount = this.axMap1.TrackingLayer.EventCount;
			ESRI.MapObjects2.Core.GeoEvent gEvt;
			double dX = maxDist * (rnd.Next(-100,100));
			double dY = maxDist * (rnd.Next(-100,100));
			//this.LoadLine();
			//line.Offset(dX, dY);

			for (int i=0; i<nEventCount;i++)
			{
				dX = maxDist * (rnd.Next(-100, 100));
				dY = maxDist * (rnd.Next(-100,100));
				gEvt = this.axMap1.TrackingLayer.get_Event(i);
				gEvt.Move(dX, dY);
			}	
		}

		private void line_Click(object sender, System.EventArgs e)
		{
			ESRI.MapObjects2.Core.Line line = new ESRI.MapObjects2.Core.LineClass();
			ESRI.MapObjects2.Core.Point pt = new ESRI.MapObjects2.Core.PointClass();
			ESRI.MapObjects2.Core.Points pts = new ESRI.MapObjects2.Core.PointsClass();
			pt.X = this.axMap1.Extent.Left;
			pt.Y = (this.axMap1.Extent.Top - this.axMap1.Extent.Height) / 2;
			pts.Add(pt);

			pt.X = this.axMap1.Extent.Left + this.axMap1.Extent.Width / 4;
			pt.Y = (this.axMap1.Extent.Top - this.axMap1.Extent.Height) / 4;
			pts.Add(pt);

			pt = this.axMap1.Extent.Center;
			pts.Add(pt);

			pt.X = this.axMap1.Extent.Center.X + this.axMap1.Extent.Width / 4;
			pt.Y = this.axMap1.Extent.Top - this.axMap1.Extent.Height / 4;
			pts.Add(pt);

			line.Parts.Add(pts);
			this.axMap1.TrackingLayer.AddEvent(line, 0);
			this.axMap1.TrackingLayer.get_Symbol(0).Color = Convert.ToUInt32(ESRI.MapObjects2.Core.ColorConstants.moRed);
			//this.axMap1.TrackingLayer.Refresh(true, this.axMap1.TrackingLayer);
			this.axMap1.CtlRefresh();
			
		}

		private void button2_Click(object sender, System.EventArgs e)
		{
			if (CreateLineMapLayer())
				SaveData();
			this.axMap1.Layers.Add(layer);
			layer.Symbol.Color = Convert.ToUInt32(ESRI.MapObjects2.Core.ColorConstants.moRed);
			this.axMap1.CtlRefresh();
		}

		private bool CreateLineMapLayer()
		{
			bool result = false;
			try
			{
				// Exports the layer (along with it's PRJ file) to the currently selected
				// coordinate system.
				this.dlgSave.Filter = "ESRI Shapefiles (*.shp)|*.shp";
				this.dlgSave.Title = "Save projected layer as...";
				if (dlgSave.ShowDialog(this) == DialogResult.OK)
				{
					if (dlgSave.FileName != null)
					{
						// Export the layer's records to the selected Coordinatesystem.
						this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
						ESRI.MapObjects2.Core.DataConnection dc ;
						dc = new ESRI.MapObjects2.Core.DataConnectionClass();
						ESRI.MapObjects2.Core.GeoDataset gds;//= new ESRI.MapObjects2.Core.GeoDatasetClass();

						//MessageBox.Show(dlgSave.FileName);
						path = dlgSave.FileName.Substring(0, dlgSave.FileName.Length - 7);
						//MessageBox.Show(path);
						dc.Database = path;
						dc.Connect();
						if (!dc.Connected)
						{
							MessageBox.Show("请指定已经有的文件");
						}
						else
						{
							ESRI.MapObjects2.Core.TableDesc tabDesc = new ESRI.MapObjects2.Core.TableDescClass();
							tabDesc.FieldCount = 2;
							//tabDesc.set_FieldLength(0,10);
							tabDesc.set_FieldName(0, "X");
							tabDesc.set_FieldType(0, ESRI.MapObjects2.Core.FieldTypeConstants.moDouble);
							tabDesc.set_FieldPrecision(0, 10);
							tabDesc.set_FieldScale(0, 3);

							//tabDesc.set_FieldLength(1, 10);
							tabDesc.set_FieldName(1, "Y");
							tabDesc.set_FieldType(1, ESRI.MapObjects2.Core.FieldTypeConstants.moDouble);
							tabDesc.set_FieldPrecision(1, 10);
							tabDesc.set_FieldScale(1, 3);
							String fileName = "xia"; 
							gds = dc.AddGeoDataset(fileName, ESRI.MapObjects2.Core.ShapeTypeConstants.moShapeTypeLine,
								tabDesc, null,null);
							layer.GeoDataset = gds;
							dc.Disconnect();
							result = true;
						}
					}
				}
			}
			catch (System.Runtime.InteropServices.ExternalException COMEx)
			{
				MessageBox.Show(COMEx.ErrorCode + ": " + COMEx.Message);
			}
			catch (System.Exception ex)
			{
				MessageBox.Show(ex.Message);
			}
			finally
			{
				this.Cursor = System.Windows.Forms.Cursors.Default;
			}
			return result;
		}

		private void SaveData()
		{
			try
			{
				ESRI.MapObjects2.Core.Field xField ;				//xField = new ESRI.MapObjects2.Core.FieldClass();
				ESRI.MapObjects2.Core.Field yField;// = new ESRI.MapObjects2.Core.FieldClass();
				ESRI.MapObjects2.Core.Field shapeField;// = new ESRI.MapObjects2.Core.FieldClass();
				ESRI.MapObjects2.Core.Fields fields;// = new ESRI.MapObjects2.Core.FieldsClass();
				ESRI.MapObjects2.Core.Recordset rs = layer.Records;
				rs.AutoFlush = false;
				fields = rs.Fields;
				shapeField = fields.Item("Shape");
				xField = fields.Item("X");
				yField = fields.Item("Y");

				ESRI.MapObjects2.Core.Line line = new ESRI.MapObjects2.Core.LineClass();
				ESRI.MapObjects2.Core.Point pt = new ESRI.MapObjects2.Core.PointClass();
				ESRI.MapObjects2.Core.Points pts = new ESRI.MapObjects2.Core.PointsClass();
				
				/*pt.X = 1181604.156d;
				pt.Y = 2298957.796d;
				pts.Add(pt);
				
			
				//pts = new ESRI.MapObjects2.Core.PointsClass();
				//pt.X = this.axMap1.Extent.Left + this.axMap1.Extent.Width / 400;
				//pt.Y = (this.axMap1.Extent.Top - this.axMap1.Extent.Height) / 20;
				pt.X = 2394976.10558d;
				pt.Y = 2574260.6747d;
				pts.Add(pt);

				pt.X = 2078887.6153d;
				pt.Y = 2089931.5363d;
				pts.Add(pt);

				line.Parts.Add(pts);
				rs.AddNew();
				shapeField.Value = line;
				xField.Value = pt.X;
				yField.Value = pt.Y;
				rs.Update();*/

				pt.X = this.axMap1.Extent.Left;
				pt.Y = (this.axMap1.Extent.Top - this.axMap1.Extent.Height) / 2;
				pts.Add(pt);

				pt = this.axMap1.Extent.Center;
				pts.Add(pt);
				line.Parts.Add(pts);
				rs.AddNew();
				shapeField.Value = line;
				xField.Value = pt.X;
				yField.Value = pt.Y;
				rs.Update();

				pts = new ESRI.MapObjects2.Core.PointsClass();
				pt.X = this.axMap1.Extent.Center.X + this.axMap1.Extent.Width / 4;
				pt.Y = this.axMap1.Extent.Top - this.axMap1.Extent.Height / 4;
				pts.Add(pt);
				
				pt.X = this.axMap1.Extent.Right ;
				pt.Y = this.axMap1.Extent.Height ;
				pts.Add(pt);

				line.Parts.Add(pts);
				rs.AddNew();
				shapeField.Value = line;
				xField.Value = pt.X;
				yField.Value = pt.Y;
				rs.Update();
				rs.AutoFlush = true;
			}
			catch (System.Runtime.InteropServices.COMException com)
			{
				MessageBox.Show("保存数据出错" + com.Message);
				return;
			}
			catch (System.Exception ex)
			{
				MessageBox.Show(ex.Message );
				return;
			}
		}

		private void LoadLine()
		{
			ESRI.MapObjects2.Core.MapLayer offSetLayer = new ESRI.MapObjects2.Core.MapLayerClass();
			//ESRI.MapObjects2.Core.GeoDataset gds = layer.Records.Export(
			//	this.dlgSave.FileName.Substring(0, this.dlgSave.FileName.Length - 4) + "1.shp", null);
			/*ESRI.MapObjects2.Core.DataConnection dc = new ESRI.MapObjects2.Core.DataConnectionClass();
			dc.Database = path;
			dc.Connect();
			if (!dc.Connected)
			{
				MessageBox.Show("数据库连接不正确");
			}
			else
			{*/
				//ESRI.MapObjects2.Core.MapLayer offSetLayer = new ESRI.MapObjects2.Core.MapLayerClass();
				//ESRI.MapObjects2.Core.GeoDataset gds = dc.FindGeoDataset("xia");
				//if (gds != null)
				//{
					offSetLayer.GeoDataset = gds;//dc.FindGeoDataset("xia1");
					ESRI.MapObjects2.Core.Recordset rs = offSetLayer.Records;
					ESRI.MapObjects2.Core.Fields flds = rs.Fields;
					ESRI.MapObjects2.Core.Field shapeFld = flds.Item("Shape");
					rs.AutoFlush = false;
					rs.MoveFirst();
					while (!rs.EOF)
					{								
						if (offSetLayer.shapeType == ESRI.MapObjects2.Core.ShapeTypeConstants.moShapeTypeLine)
						{
							line = (ESRI.MapObjects2.Core.Line)shapeFld.Value;
							line.Offset((double)(this.axMap1.Extent.Height / 20), (double)(this.axMap1.Extent.Height / 20));

							if (rs.Updatable == true)
							{
								//MessageBox.Show("Yeah");
								rs.Edit();
								shapeFld.Value = line;
							}
							if (rs.EditMode == ESRI.MapObjects2.Core.EditModeConstants.moEditInProgress)
								rs.Update();
							rs.MoveNext();
						}
					//}	
					rs.AutoFlush = true;
				/*	ESRI.MapObjects2.Core.Field shapeFld = offSetLayer.Records.Fields.Item("Shape");
					offSetLayer.Records.AutoFlush = false;
					offSetLayer.Records.MoveFirst();
					while (!offSetLayer.Records.EOF)
					{
						line = (ESRI.MapObjects2.Core.Line)shapeFld.Value;
						line.Offset(180d, 145d);
						if (offSetLayer.Records.Updatable == true)
						{
							offSetLayer.Records.Edit();
							shapeFld.Value = line;
						}
						if (offSetLayer.Records.EditMode == ESRI.MapObjects2.Core.EditModeConstants.moEditInProgress)
							offSetLayer.Records.Update();
						offSetLayer.Records.MoveNext();
					}
					offSetLayer.Records.AutoFlush= true;*/
					this.axMap1.Layers.Add(offSetLayer);
					offSetLayer.Symbol.Color = Convert.ToUInt32(ESRI.MapObjects2.Core.ColorConstants.moGreen);
					this.axMap1.CtlRefresh();
				//}
				//dc.Disconnect();
			}
			
		}

		private void checkBox2_Click(object sender, System.EventArgs e)
		{
			
		}

		private void checkBox2_CheckedChanged(object sender, System.EventArgs e)
		{
			LoadLine();
		}

		private void axMap1_MouseMoveEvent(object sender, ESRI.MapObjects2.Core.MouseMoveEventArgs e)
		{
			ESRI.MapObjects2.Core.Point pt = this.axMap1.ToMapPoint(e.x, e.y);
			this.label1.Text = pt.X + " " + pt.Y;
			this.label2.Text = e.x + " " + e.y;
		}
		
		
	}
}

⌨️ 快捷键说明

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