Exemple #1
0
        //左键抬起
        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;
                }
            }
        }