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

📄 mainfrm.cs

📁 能够在PDA上运行的地图控件
💻 CS
📖 第 1 页 / 共 2 页
字号:
		{
			this.Close();
		}

		/// <summary>
		/// 关于
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void mnAbout_Click(object sender, System.EventArgs e)
		{
			AboutDlg dlg=new AboutDlg();
			dlg.ShowDialog();
		}

		/// <summary>
		/// 绘制样例,该函数示范如何使用代码创建一些图形对象
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void mnDrawDemo_Click(object sender, System.EventArgs e)
		{
			//清空当前图形!
			this.m_LineViewer.CloseMap();

			//创建一个正五边形
			CPolygon polygon=new CPolygon(6,80,50,40,-90);
			CText label=new CText("Hello World -- by hoodlum1980",20,200,220,20,FontStyle.Regular,0x000000,0);

			//一个起始角度为30度的椭圆
			CEllipse ellipse=new CEllipse(0,0,50,25,30,0x010101,0xff4fff);
			CCircle circle=new CCircle(200,10,20,0x010101,0x558899);

			//创建一个多段线,围成一个多边形
			double[] points=new double[]{0,0,50,100,100,200,10,150,0,0};
			CPolyline polyline=new CPolyline(points, 0x010101);

			//创建一个图元
			CMeta meta=new CMeta();
			meta.MetaID=0x101;
			meta.Add(polygon);

			//创建图元库,并把图元添加到图元库中,注意图元库可能为空(控件初始化时不会创建图元库)
			if(LineViewCtl.METALIB==null)
				LineViewCtl.METALIB=new MetaLib();
			LineViewCtl.METALIB.Clear();
			LineViewCtl.METALIB.Add(meta);
			//创建引用对象(链接对象)
			//几何变换参数,旋转20度,
			TransParams tran=new TransParams(20,1.3,200,280);
            CLinkObject link=new CLinkObject(meta.MetaID,tran);
			//缩放倍数=0.7,偏移400,100
			CLinkObject link2=new CLinkObject(meta.MetaID,0, 0.7, 300, 100);

			//创建一个新的图层(类似文件)
			Layer layer=new Layer();
			layer.AddRange(new MapObject[] {polygon,label, ellipse,circle,polyline,link,link2});
			layer.Name="图层001";

			//创建一个新的图层组(类似文件夹)
			LayerSet layerset=new LayerSet();
			layerset.Name="图层组A";
			layerset.Add(layer);
			LayerSet layerset2=new LayerSet();
			layerset2.Name="子文件夹";
			layerset2.Add(layerset);
			this.m_LineViewer.LAYERSET.Add(layerset2);

			//获取全图边界
			this.m_LineViewer.ViewBox = this.m_LineViewer.GetBorderRectD();
			//缩放到全图
            this.m_LineViewer.ZoomToViewbox();
			//清空视图堆栈
			this.m_LineViewer.ClearViewStack();
			//将当前视图参数存入栈
			this.m_LineViewer.PushCurrentView();
			//广播全图改变的事件(用于通知其他观察者全图内容已经改变)
			this.m_LineViewer.BroadcastPreviewMapChanged();
		}

		/// <summary>
		/// 打开图形文件
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void mnOpenPic_Click(object sender, System.EventArgs e)
		{
			OpenFileDialog dlg=new OpenFileDialog();
			dlg.InitialDirectory = @"\Program Files\GisCtlDemo\";
			dlg.Filter="*.lvf (矢量图形)|*.lvf|*.mif (MapInfo文件)|*.mif|*.* (所有文件)|*.*";
			string filename;
			int filterIndex=-1;
			if(dlg.ShowDialog()==DialogResult.OK)
			{
				filename=dlg.FileName;
				filterIndex=dlg.FilterIndex;
			}
			else return;
			//错误信息
			string errorMsg;
			if(!this.m_LineViewer.LoadFile(filename,out errorMsg))
			{
				Cursor.Current=Cursors.Default;
				MessageBox.Show("打开文件失败!\r\n"+errorMsg);
				return;
			}
		}

		/// <summary>
		/// 保存图形
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void mnSavePic_Click(object sender, System.EventArgs e)
		{
			SaveFileDialog dlg=new SaveFileDialog();
			dlg.Filter="*.lvf (矢量图形)|*.lvf|*.mif (Mif File)|*.mif";
			string filename;
			int filterIndex=-1;
			if(dlg.ShowDialog()==DialogResult.OK)
			{
				filename=dlg.FileName;
				filterIndex=dlg.FilterIndex;
			}
			else return;
			//自动补充文件的后缀
			switch(filterIndex)
			{
				case 1:
					if(!filename.EndsWith(".lvf"))
						filename+=".lvf";
					break;
				case 2:
					if(!filename.EndsWith(".mif"))
						filename+=".mif";
					break;
			}
			string errorMsg;
			if(!this.m_LineViewer.SaveFile(filename,out errorMsg))
				MessageBox.Show(errorMsg);
			else
				MessageBox.Show("地图保存完成!\r\n"+filename);
		}

		/// <summary>
		/// 关闭图形
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void mnClosePic_Click(object sender, System.EventArgs e)
		{
			this.m_LineViewer.CloseMap();		
		}

		/// <summary>
		/// 导航器
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void mnNaviDlg_Click(object sender, System.EventArgs e)
		{
			LineViewLib.LVNaviDlg dlg=new LVNaviDlg(this.m_LineViewer);
			dlg.Show();
		}

		/// <summary>
		/// 图层管理
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void mnLayerMgr_Click(object sender, System.EventArgs e)
		{
			LineViewLib.LVLayerDlg dlg=new LVLayerDlg(this.m_LineViewer);
			dlg.ShowDialog();
		}

		/// <summary>
		/// 选项设置
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void mnOptionsDlg_Click(object sender, System.EventArgs e)
		{
			LineViewLib.LVOptionDlg dlg=new LVOptionDlg(this.m_LineViewer);
			dlg.ShowDialog();
		}

		/// <summary>
		/// 平移工具
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void mnToolPan_Click(object sender, System.EventArgs e)
		{
			//菜单间互斥
			if(this.m_LastCheckedMenuItem!=null)
				this.m_LastCheckedMenuItem.Checked=false;
			MenuItem item=sender as MenuItem;			
			item.Checked = true;
			this.m_LastCheckedMenuItem=item;
            this.m_LineViewer.CurrentTool=LVTool.Pan;
		}

		/// <summary>
		/// 缩放到矩形
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void mnToolZoomRect_Click(object sender, System.EventArgs e)
		{
			//菜单间互斥
			if(this.m_LastCheckedMenuItem!=null)
				this.m_LastCheckedMenuItem.Checked=false;
			MenuItem item=sender as MenuItem;			
			item.Checked = true;
			this.m_LastCheckedMenuItem=item;
			this.m_LineViewer.CurrentTool=LVTool.ZoomToRect;
		}

		/// <summary>
		/// 捕捉对象
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void mnToolSelObj_Click(object sender, System.EventArgs e)
		{
			//菜单间互斥
			if(this.m_LastCheckedMenuItem!=null)
				this.m_LastCheckedMenuItem.Checked=false;
			MenuItem item=sender as MenuItem;			
			item.Checked = true;
			this.m_LastCheckedMenuItem=item;
			this.m_LineViewer.CurrentTool=LVTool.CaptureObject;
		}

		/// <summary>
		/// 设置中心点
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void mnToolSetCenter_Click(object sender, System.EventArgs e)
		{
			//菜单间互斥
			if(this.m_LastCheckedMenuItem!=null)
				this.m_LastCheckedMenuItem.Checked=false;
			MenuItem item=sender as MenuItem;			
			item.Checked = true;
			this.m_LastCheckedMenuItem=item;
			this.m_LineViewer.CurrentTool=LVTool.SetCenter;
		}
		#endregion

		/// <summary>
		/// 工具栏图标按钮的处理!
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
		{
			//获取当前按下按钮索引,强制转为byte!
			int index=this.toolBar1.Buttons.IndexOf(e.Button);
			switch(index)
			{
				case 0:
					//前一个视图:
					this.m_LineViewer.GotoPreviousView();
					break;

				case 1:
					//后一个视图:
					this.m_LineViewer.GotoNextView();
					break;

				case 2:
					//缩放到全图(ViewBox)
					this.m_LineViewer.ZoomToViewbox();
					//非LVTool操作,需要将视图手工入栈!!!
					this.m_LineViewer.PushCurrentView();
					break;

				case 3:
					//zoom in: 放大
					this.m_LineViewer.ZoomIn();
					//非LVTool操作,需要将视图手工入栈!!!
					this.m_LineViewer.PushCurrentView();
					break;

				case 4:
					//zoom out: 缩小
					this.m_LineViewer.ZoomOut();
					//非LVTool操作,需要将视图手工入栈!!!
					this.m_LineViewer.PushCurrentView();
					break;
				default:
					break;
			}
	
		}

	}
}

⌨️ 快捷键说明

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