//左键抬起 private void imageRobot_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { //记录按下时的位置 MapOperate.mouseLeftBtnDownToMap = e.GetPosition(cvMap); //编辑单个元素 if (MapOperate.NowMode == MapOperate.EnumMode.EditElement) { //记录当前状态 if (MapOperate.MovedAfterLeftBtn) { MapOperate.History.AddRecord("编辑单个"); } } else if (MapOperate.NowMode == MapOperate.EnumMode.MultiEdit) { //记录当前状态 if (MapOperate.MovedAfterLeftBtn) { MapOperate.History.AddRecord("编辑多个"); } } else //多选状态 if (MapOperate.NowMode == MapOperate.EnumMode.MultiSelect) { //是否按住左键移动过,如果没有移动就不能计算选中 if (MapOperate.MovedAfterLeftBtn) { //清除移动标志 MapOperate.MovedAfterLeftBtn = false; //清除选中框 MapOperate.ClearMultiSelectRect(); //计算选中的元素 MapFunction.GetMultiSelectedObject(); //如果一个都没有选上,退出多选状态 if (MapOperate.MultiSelected.RFIDS.Count == 0 && MapOperate.MultiSelected.Lines.Count == 0 && MapOperate.MultiSelected.ForkLines.Count == 0) { //退出多选模式 MapOperate.NowMode = MapOperate.EnumMode.EditElement; } else //有选中的就进入多个编辑状态 { MapOperate.NowMode = MapOperate.EnumMode.MultiEdit; } } //没有移动,直接退出多选 else { //恢复单个编辑模式 MapOperate.NowMode = MapOperate.EnumMode.EditElement; } } else //添加新元素 if (MapOperate.NowMode == MapOperate.EnumMode.AddElement) { switch (MapOperate.NowType) { case MapOperate.EnumElementType.None: break; case MapOperate.EnumElementType.RFID: //添加RFID { //记录当前状态 MapOperate.History.AddRecord("增加RFID"); //增加下一个 MapOperate.NowSelectIndex = MapElement.AddRFIDAndShow(); } break; case MapOperate.EnumElementType.RouteLine: //添加直线 { //如果是第一步 if (MapOperate.AddStep == 1) { //【隐藏编辑器】【隐藏后再添加,避免编辑器出现在线条下发】 MapFunction.SetRouteLineIsNormal(MapOperate.NowSelectIndex); //显示直线,并设置起点坐标 MapElement.DrawRouteLine(MapOperate.NowSelectIndex, MapOperate.mouseLeftBtnDownToMap); //显示起点编辑器 MapElement.RouteLineShowStart(MapOperate.NowSelectIndex); //显示终点编辑器 MapElement.RouteLineShowEnd(MapOperate.NowSelectIndex); //进入第二步 MapOperate.AddStep = 2; } else if (MapOperate.AddStep == 2) { //直线添加完成【隐藏编辑器】 MapFunction.SetRouteLineIsNormal(MapOperate.NowSelectIndex); //记录当前状态 MapOperate.History.AddRecord("增加直线"); //添加新直线 MapOperate.NowSelectIndex = MapElement.AddRouteLine(); //显示直线起点编辑器 MapElement.RouteLineShowStart(MapOperate.NowSelectIndex); //返回添加直线第一步 MapOperate.AddStep = 1; } } break; case MapOperate.EnumElementType.RouteForkLine: //添加分叉线【圆弧】 { //如果是第一步 if (MapOperate.AddStep == 1) { //【隐藏编辑器】【隐藏后再添加,避免编辑器出现在线条下发】 MapFunction.SetRouteForkLineIsNormal(MapOperate.NowSelectIndex); //显示分叉【圆弧】,并设置起点坐标 MapElement.DrawForkLine(MapOperate.NowSelectIndex, MapOperate.mouseLeftBtnDownToMap); //显示起点编辑器 MapElement.ForkLineShowStart(MapOperate.NowSelectIndex); //显示终点编辑器 MapElement.ForkLineShowEnd(MapOperate.NowSelectIndex); //进入第二步 MapOperate.AddStep = 2; } else if (MapOperate.AddStep == 2) { //直线添加完成【隐藏编辑器】 MapFunction.SetRouteForkLineIsNormal(MapOperate.NowSelectIndex); //记录当前状态 MapOperate.History.AddRecord("增加分叉"); //添加新直线 MapOperate.NowSelectIndex = MapElement.AddForkLine(); //显示直线起点编辑器 MapElement.ForkLineShowStart(MapOperate.NowSelectIndex); //返回添加直线第一步 MapOperate.AddStep = 1; } } break; default: break; } } }