//鼠标移动 private void imageRobot_PreviewMouseMove(object sender, System.Windows.Input.MouseEventArgs e) { //获取当前坐标 Point nowPoint = e.GetPosition(gridDraw); MapOperate.NowPoint = nowPoint; //显示当前坐标到界面 MapOperate.ViewInfo.View = new Point(Math.Round(nowPoint.X, 0), Math.Round(nowPoint.Y, 0)); //计算左键按下移动偏差 MapOperate.mouseLeftBtnDownMoveDiff.X = nowPoint.X - MapOperate.mouseLeftBtnDownToMap.X; MapOperate.mouseLeftBtnDownMoveDiff.Y = nowPoint.Y - MapOperate.mouseLeftBtnDownToMap.Y; //判断左键按下后是否发生移动 if (e.LeftButton == MouseButtonState.Pressed) { if (MapOperate.mouseLeftBtnDownToMap.X != nowPoint.X || MapOperate.mouseLeftBtnDownToMap.Y != nowPoint.Y) { //标记左键按下移动状态【是否按住左键移动过】 MapOperate.MovedAfterLeftBtn = true; } } //移动视图【如果右键按下】 if (e.RightButton == MouseButtonState.Pressed) { System.Windows.Point position = e.GetPosition(cvMap); System.Windows.Point position1 = e.GetPosition(drawViewScroll); tlt.X += (position.X - MapOperate.mouseRightBtnDownPoint.X) * MapOperate.ViewInfo.Scale; tlt.Y += (position.Y - MapOperate.mouseRightBtnDownPoint.Y) * MapOperate.ViewInfo.Scale; //更新圆点坐标,保留两位小数 MapOperate.ViewInfo.Origin = new Point(Math.Round(tlt.X, 0), Math.Round(tlt.Y, 0)); } //编辑单个元素 if (MapOperate.NowMode == MapOperate.EnumMode.EditElement) { //左键按住移动位置【调整元素位置】 if (e.LeftButton == MouseButtonState.Pressed) { //左键按下后,鼠标不移动也会进入移动事件, //导致如果点击的位置不是中心,标签会动一下, //很不美好,所以加坐标比较,没有变化就不进行移动 if (MapOperate.MovedAfterLeftBtn == false) { return; } if (MapOperate.NowSelectIndex != -1) { //移动标签 if (MapOperate.NowType == MapOperate.EnumElementType.RFID) { MapFunction.MoveRFIDTo(MapOperate.NowSelectIndex, nowPoint); } else //移动直线 if (MapOperate.NowType == MapOperate.EnumElementType.RouteLine) { switch (MapOperate.ElementEditMode) { case MapOperate.EnumElementEditMode.Start: MapFunction.MoveRouteLineStart(MapOperate.NowSelectIndex, nowPoint); break; case MapOperate.EnumElementEditMode.End: MapFunction.MoveRouteLineEnd(MapOperate.NowSelectIndex, nowPoint); break; case MapOperate.EnumElementEditMode.All: MapFunction.MoveRouteLineAll(MapOperate.NowSelectIndex, nowPoint); break; default: break; } } else //移动分叉【圆弧】 if (MapOperate.NowType == MapOperate.EnumElementType.RouteForkLine) { switch (MapOperate.ElementEditMode) { case MapOperate.EnumElementEditMode.Start: MapFunction.MoveForkLineStartForAdd(MapOperate.NowSelectIndex, nowPoint); break; case MapOperate.EnumElementEditMode.End: MapFunction.MoveForkLineEnd(MapOperate.NowSelectIndex, nowPoint); break; case MapOperate.EnumElementEditMode.All: MapFunction.MoveForkLineAll(MapOperate.NowSelectIndex, nowPoint); break; default: break; } } } } } else //多选模式 if (MapOperate.NowMode == MapOperate.EnumMode.MultiSelect) { //绘制选择框 MapOperate.DrawMultiSelectRect(nowPoint); } else //多编辑模式 if (MapOperate.NowMode == MapOperate.EnumMode.MultiEdit) { //如果按住左键,则移动对象 if (e.LeftButton == MouseButtonState.Pressed) { //移动所以选中的元素 MapFunction.MoveMultiSelected(nowPoint, MapOperate.MultiSelected); } } else //粘贴模式 if (MapOperate.NowMode == MapOperate.EnumMode.Paste) { //移动所以选中的元素 MapFunction.MoveMultiSelected(nowPoint, MapOperate.PastedObject); } else //添加新元素 if (MapOperate.NowMode == MapOperate.EnumMode.AddElement) { if (MapOperate.NowType == MapOperate.EnumElementType.RFID) { MapFunction.MoveRFIDTo(MapOperate.NowSelectIndex, nowPoint); } else if (MapOperate.NowType == MapOperate.EnumElementType.RouteLine) { if (MapOperate.AddStep == 1) { MapFunction.MoveRouteLineStartForAdd(MapOperate.NowSelectIndex, nowPoint); } else { MapFunction.MoveRouteLineEnd(MapOperate.NowSelectIndex, nowPoint); } } else if (MapOperate.NowType == MapOperate.EnumElementType.RouteForkLine) { if (MapOperate.AddStep == 1) { MapFunction.MoveForkLineStartForAdd(MapOperate.NowSelectIndex, nowPoint); } else { MapFunction.MoveForkLineEnd(MapOperate.NowSelectIndex, nowPoint); } } } }