void out地图_MouseMove(object sender, MouseEventArgs e) { var __当前位置 = _F地图.屏幕坐标转经纬度(e.Location); if (_上一个点 == null) { //提示 if (_测距点索引.HasValue) { _F地图.除点(_测距点索引.Value); } _测距点索引 = _F地图.添加点(__当前位置, Properties.Resources.测距起点, "右键单击确定起点", null, null, E标题显示方式.Always); return; } if (_测距线索引.HasValue) { _F地图.除线(_测距线索引.Value); } if (_测距点索引.HasValue) { _F地图.除点(_测距点索引.Value); } var __距离 = H地图算法.测量两点间间距(_上一个点, __当前位置); _测距点索引 = _F地图.添加点(__当前位置, Properties.Resources.测距起点, string.Format("总长:{0}\n右键单击确定, 右键双击结束", 获取距离描述(__距离 + _当前测距.距离)), null, null, E标题显示方式.Always); _测距线索引 = _F地图.添加线(new List <M经纬度> { _上一个点, __当前位置 }, 1, Color.FromArgb(252, 135, 78)); }
void out地图_MouseDoubleClick(object sender, MouseEventArgs e) { if (e.Button != MouseButtons.Right || _上一个点 == null) { return; } _F地图.除点(_当前测距.点集合.Last()); //_F地图.删除线(_当前测距.线集合.Last()); _当前测距.点集合.RemoveAt(_当前测距.点集合.Count - 1); var __当前位置 = _F地图.屏幕坐标转经纬度(e.Location); var __距离 = H地图算法.测量两点间间距(_上一个点, __当前位置); //_当前测距.线集合.Add(_F地图.添加线(new List<M经纬度> { _上一个点, __当前位置 }, 1, Color.FromArgb(252, 135, 78))); _当前测距.点集合.Add(_F地图.添加点(__当前位置, Properties.Resources.测距终点, string.Format("终点:{0}", 获取距离描述(__距离 + _当前测距.距离)), _当前测距, null, E标题显示方式.Always)); _当前测距.距离 = __距离 + _当前测距.距离; _所有测距.Add(_当前测距); On测距结果(_当前测距.距离); _上一个点 = null; if (_测距线索引.HasValue) { _F地图.除线(_测距线索引.Value); } if (_测距点索引.HasValue) { _F地图.除点(_测距点索引.Value); } _测距点索引 = null; _测距线索引 = null; }
void out地图_MouseClick(object sender, MouseEventArgs e) { if (e.Button != MouseButtons.Right) { return; } var __当前位置 = _F地图.屏幕坐标转经纬度(e.Location); if (_上一个点 == null) { //起点 _当前测距 = new M测距(); _当前测距.点集合.Add(_F地图.添加点(__当前位置, Properties.Resources.测距起点, "起点", null, null, E标题显示方式.Always)); _上一个点 = __当前位置; return; } var __距离 = H地图算法.测量两点间间距(_上一个点, __当前位置); _当前测距.线集合.Add(_F地图.添加线(new List <M经纬度> { _上一个点, __当前位置 }, 2, Color.FromArgb(252, 135, 78))); _当前测距.点集合.Add(_F地图.添加点(__当前位置, Properties.Resources.测距起点, 获取距离描述(__距离 + _当前测距.距离), null, null, E标题显示方式.Always)); _当前测距.距离 = __距离 + _当前测距.距离; _上一个点 = __当前位置; }
void out地图_MouseUp(object sender, MouseEventArgs e) { if (!this.Visible || e.Button != MouseButtons.Right || 当前方式 == E圈选方式.无) { return; } //Debug.WriteLine("鼠标释放位置: " + e.Location); switch (当前方式) { case E圈选方式.无: break; case E圈选方式.矩形: if (_鼠标点击位置列表.Count == 0) { return; } var __矩形起点 = _I地图.屏幕坐标转经纬度(_鼠标点击位置列表[0]); var __矩形终点 = _I地图.屏幕坐标转经纬度(e.Location); if (自动删除圈选) { _I地图.除多边形(_圈选图形索引); } //获取圈选内容 On处理矩形圈选结束(__矩形起点, __矩形终点); _鼠标点击位置列表.Clear(); break; case E圈选方式.圆形: if (_鼠标点击位置列表.Count == 0) { return; } var __圆形起点 = _I地图.屏幕坐标转经纬度(_鼠标点击位置列表[0]); var __圆形终点 = _I地图.屏幕坐标转经纬度(e.Location); if (自动删除圈选) { _I地图.除圆(_圈选图形索引); } //获取圈选内容 var __圆心 = __圆形起点; var __半径 = H地图算法.测量两点间间距(__圆心, __圆形终点); On处理圆形圈选结束(__圆心, __半径); _鼠标点击位置列表.Clear(); break; case E圈选方式.多边形: break; default: throw new ArgumentOutOfRangeException(); } }
public void 结束() { _F地图.MouseDown -= out地图_MouseDown; _F地图.MouseMove -= out地图_MouseMove; _F地图.MouseUp -= out地图_MouseUp; //Debug.WriteLine("鼠标释放位置: " + e.Location); var __圆心 = _F地图.屏幕坐标转经纬度(_起点); var __当前位置 = _F地图.屏幕坐标转经纬度(_终点); //获取圈选内容 var __半径 = H地图算法.测量两点间间距(__圆心, __当前位置); On圈选结束(__圆心, __半径); }
private void 绘制圆形(MouseEventArgs e) { var __起点 = _I地图.屏幕坐标转经纬度(_鼠标点击位置列表[0]); var __终点 = _I地图.屏幕坐标转经纬度(e.Location); _I地图.除圆(_圈选图形索引); var __圆心 = __起点; var __半径 = H地图算法.测量两点间间距(__圆心, __终点); _圈选图形索引 = _I地图.添加圆( __圆心, __半径, new M区域绘制参数 { 边框宽度 = 1, 边框颜色 = Color.FromArgb(255, 0, 0, 255), 填充颜色 = Color.FromArgb(55, 135, 206, 235) }); }
void do保存_Click(object sender, EventArgs e) { switch (当前方式) { case E圈选方式.无: break; case E圈选方式.矩形: if (_鼠标点击位置列表.Count != 2) { new F对话框_确定("请使用鼠标右键绘图").ShowDialog(); return; } var __矩形起点 = _I地图.屏幕坐标转经纬度(_鼠标点击位置列表[0]); var __矩形终点 = _I地图.屏幕坐标转经纬度(_鼠标点击位置列表[1]); On处理矩形圈选结束(__矩形起点, __矩形终点); break; case E圈选方式.圆形: if (_鼠标点击位置列表.Count != 2) { new F对话框_确定("请使用鼠标右键绘图").ShowDialog(); return; } var __圆形起点 = _I地图.屏幕坐标转经纬度(_鼠标点击位置列表[0]); var __圆形终点 = _I地图.屏幕坐标转经纬度(_鼠标点击位置列表[1]); var __圆心 = __圆形起点; var __半径 = H地图算法.测量两点间间距(__圆心, __圆形终点); On处理圆形圈选结束(__圆心, __半径); break; case E圈选方式.多边形: if (_鼠标点击位置列表.Count < 4) { new F对话框_确定("请使用鼠标右键绘图").ShowDialog(); return; } var __顶点列表 = _鼠标点击位置列表.Select(q => _I地图.屏幕坐标转经纬度(q)).ToList(); On处理多边形圈选结束(__顶点列表); break; default: throw new ArgumentOutOfRangeException(); } 清除(); }
private void 绘制圆形(MouseEventArgs e) { if (_圈选图形索引 > 0) { _F地图.除圆(_圈选图形索引); } var __圆心 = _F地图.屏幕坐标转经纬度(_起点); var __当前位置 = _F地图.屏幕坐标转经纬度(e.Location); var __半径 = H地图算法.测量两点间间距(__圆心, __当前位置); _圈选图形索引 = _F地图.添加圆( __圆心, __半径, new M区域绘制参数 { 边框宽度 = 1, 边框颜色 = Color.FromArgb(255, 0, 0, 255), 填充颜色 = Color.FromArgb(55, 135, 206, 235) }); }