private void ClearAoi()
        {
            IPencilToolLayer pencilLayer = _canvas.CurrentViewControl as IPencilToolLayer;

            if (pencilLayer != null)
            {
                pencilLayer.Reset();
            }
            _aoiContainer.Reset();
            _selectedAOILayer.Reset();
            _canvas.Refresh(enumRefreshType.All);
        }
Exemple #2
0
        void ICurrentRasterInteractiver.StartAOIDrawing(Action drawFinishedNotifiter)
        {
            IPencilToolLayer aoiLayer = _initializer.StartAOIDrawing(enumPencilType.FreeCurve);

            if (aoiLayer != null)
            {
                aoiLayer.PencilIsFinished += new Action <GeometryOfDrawed>((v) =>
                {
                    drawFinishedNotifiter();
                    _initializer._aoiContainer.Reset();
                });
            }
        }
        private void ClearAoiAndResetCurrentViewControl()
        {
            IPencilToolLayer pencilLayer = _canvas.CurrentViewControl as IPencilToolLayer;

            if (pencilLayer != null)
            {
                pencilLayer.Reset();
                _canvas.CurrentViewControl = new DefaultControlLayer();
            }
            if (_selectedAOILayer.AOIs != null && _selectedAOILayer.AOIs.Count() != 0)
            {
                _aoiContainer.RemoveSelectedAOI(_selectedAOILayer.AOIs.ToArray());
                _selectedAOILayer.Reset();
            }
            else
            {
                _aoiContainer.Reset();
                _selectedAOILayer.Reset();
            }
            _canvas.Refresh(enumRefreshType.All);
        }
Exemple #4
0
        void ICurrentRasterInteractiver.StartAOIDrawing(string shapeType, Action <int[], CodeCell.AgileMap.Core.Shape> drawFinishedNotifier)
        {
            IPencilToolLayer aoiLayer = null;

            if (shapeType == "FreeCurve")
            {
                aoiLayer = _initializer.StartAOIDrawing(enumPencilType.FreeCurve);
            }
            else if (shapeType == "Polygon")
            {
                aoiLayer = _initializer.StartAOIDrawing(enumPencilType.Polygon);
            }
            else if (shapeType == "Rectangle")
            {
                aoiLayer = _initializer.StartAOIDrawing(enumPencilType.Rectangle);
            }
            else if (shapeType == "Circle")
            {
                aoiLayer = _initializer.StartAOIDrawing(enumPencilType.Circle);
            }
            else
            {
                aoiLayer = _initializer.StartAOIDrawing(enumPencilType.FreeCurve);
            }
            if (aoiLayer != null)
            {
                aoiLayer.PencilIsFinished += new Action <GeometryOfDrawed>((v) =>
                {
                    if (drawFinishedNotifier != null)
                    {
                        drawFinishedNotifier(_aoiProvider.GetIndexes(), GetGeoGeometry(v));
                    }
                    _initializer._aoiContainer.Reset();
                });
            }
        }
        internal void FloatToolItemClick(FloatToolItem item)
        {
            IPencilToolLayer aoiLayer = null;

            switch (item.Text)
            {
            case "绘制AOI":
                _toolbarManager.Close();
                aoiLayer                  = new PencilToolLayer();
                aoiLayer.PencilType       = enumPencilType.FreeCurve;
                aoiLayer.PencilIsFinished = (result) =>
                {
                    //if (!_ismultiAoi)
                    //    ClearAoi();
                    _aoiContainer.AddAOI(result);
                    _currentPencilToolText = item.Text;
                    //if (Control.ModifierKeys != Keys.Control)
                    //  _canvas.CurrentViewControl = new DefaultControlLayer();
                };
                _canvas.CurrentViewControl = aoiLayer;
                CloseOtherLayerEdit();
                break;

            case "绘制AOI(矩形)":
                _toolbarManager.Close();
                aoiLayer                  = new PencilToolLayer();
                aoiLayer.PencilType       = enumPencilType.Rectangle;
                aoiLayer.PencilIsFinished = (result) =>
                {
                    //if (!_ismultiAoi)
                    //    ClearAoi();
                    _aoiContainer.AddAOI(result);
                    _currentPencilToolText = item.Text;
                    //if (Control.ModifierKeys != Keys.Control)
                    //_canvas.CurrentViewControl = new DefaultControlLayer();
                };
                _canvas.CurrentViewControl = aoiLayer;
                CloseOtherLayerEdit();
                break;

            case "绘制AOI(多边形)":
                _toolbarManager.Close();
                aoiLayer                  = new PencilToolLayer();
                aoiLayer.PencilType       = enumPencilType.Polygon;
                aoiLayer.PencilIsFinished = (result) =>
                {
                    //if (!_ismultiAoi)
                    //    ClearAoi();
                    _aoiContainer.AddAOI(result);
                    _currentPencilToolText = item.Text;
                    //if (Control.ModifierKeys != Keys.Control)
                    //    _canvas.CurrentViewControl = new DefaultControlLayer();
                };
                _canvas.CurrentViewControl = aoiLayer;
                CloseOtherLayerEdit();
                break;

            case "绘制AOI(圆形)":
                _toolbarManager.Close();
                aoiLayer                  = new PencilToolLayer();
                aoiLayer.PencilType       = enumPencilType.Circle;
                aoiLayer.PencilIsFinished = (result) =>
                {
                    //if (!_ismultiAoi)
                    //    ClearAoi();
                    _aoiContainer.AddAOI(result);
                    _currentPencilToolText = item.Text;
                    //if (Control.ModifierKeys != Keys.Control)
                    //    _canvas.CurrentViewControl = new DefaultControlLayer();
                };
                _canvas.CurrentViewControl = aoiLayer;
                CloseOtherLayerEdit();
                break;

            case "导入AOI":
                _toolbarManager.Close();
                _canvas.CurrentViewControl = new PencilToolLayer();
                if (_contextMenuHandler.HandleImportAOI())
                {
                    _canvas.Refresh(enumRefreshType.All);
                }
                _canvas.CurrentViewControl = new DefaultControlLayer();
                CloseOtherLayerEdit();
                break;

            case "交互选择AOI":
                _toolbarManager.Close();
                aoiLayer            = new PencilToolLayer();
                aoiLayer.PencilType = enumPencilType.Rectangle;
                _selectedAOILayer.AOIContaingerLayer = _aoiContainer;
                _selectedAOILayer.Edit    = true;
                aoiLayer.PencilIsFinished = (result) =>
                {
                    if (_contextMenuHandler.HandleSelectAOIFromFeatures(result))
                    {
                        _canvas.CurrentViewControl = new DefaultControlLayer();
                        _canvas.Refresh(enumRefreshType.All);
                    }
                };
                _canvas.CurrentViewControl = aoiLayer;
                break;

            case "删除AOI区域":
                _toolbarManager.Close();
                ClearAoiAndResetCurrentViewControl();
                break;

            case "魔术棒":
                _toolbarManager.Close();
                IPencilToolLayer magicLayer = new PencilToolLayer();
                _canvas.CurrentViewControl  = magicLayer;
                magicLayer.PencilIsFinished = (result) =>
                {
                    _contextMenuHandler.HandleAdsorb(result);
                    _currentPencilToolText = item.Text;
                    //if (Control.ModifierKeys != Keys.Control)
                    //    _canvas.CurrentViewControl = new DefaultControlLayer();
                    _canvas.Refresh(enumRefreshType.All);
                };
                CloseOtherLayerEdit();
                break;

            case "魔术棒判识":
                _toolbarManager.Close();
                IContextMenuArgProvider argProvider = _toolbarManager.Show(_contextMenuHandler.GetArgProviderUI(enumCanvasViewerMenu.MagicWand));
                if (argProvider == null)
                {
                    return;
                }
                IPencilToolLayer magicWandLayer = new PencilToolLayer();
                magicWandLayer.PencilType  = enumPencilType.Point;
                _canvas.CurrentViewControl = magicWandLayer;
                ContextMenuToolbarManager barManager = (_toolbarManager as ContextMenuToolbarManager);
                if (barManager != null)
                {
                    barManager.ucDispose = new ContextMenuToolbarManager.UCDisposeDeleg(UCDispose);
                }
                magicWandLayer.PencilIsFinished = (result) =>
                {
                    if (IsFitOtherToolItem(item))
                    {
                        return;
                    }
                    Dictionary <string, object> args = new Dictionary <string, object>();
                    args.Add("tolerance", argProvider.GetArg("tolerance"));
                    args.Add("iscontinued", argProvider.GetArg("iscontinued"));
                    //获取参数
                    _contextMenuHandler.HandleMagicWandExtracting(result, args);
                    _currentPencilToolText = item.Text;
                    //_canvas.CurrentViewControl = new DefaultControlLayer();
                };
                CloseOtherLayerEdit();
                break;

            case "橡皮檫":
                _toolbarManager.Close();
                IPencilToolLayer earseLayer = new PencilToolLayer();
                _canvas.CurrentViewControl  = earseLayer;
                earseLayer.PencilIsFinished = (result) =>
                {
                    _contextMenuHandler.HandleErase(result);
                    _currentPencilToolText = item.Text;
                    //if (Control.ModifierKeys != Keys.Control)
                    //    _canvas.CurrentViewControl = new DefaultControlLayer();
                    _canvas.Refresh(enumRefreshType.All);
                };
                CloseOtherLayerEdit();
                break;

            case "闪烁":
                _contextMenuHandler.HandleFlash();
                CloseOtherLayerEdit();
                break;

            case "撤销":
                _contextMenuHandler.HandleUnDo();
                CloseOtherLayerEdit();
                break;

            case "重做":
                _contextMenuHandler.HandleReDo();
                CloseOtherLayerEdit();
                break;

            case "清除判识结果":
                _contextMenuHandler.HandleRemoveAll();
                CloseOtherLayerEdit();
                break;

            case "多感兴趣区域":
                TryResetPencilTool();
                _ismultiAoi = !_ismultiAoi;
                _aoiContainer.IsOnlyOneAOI = !_ismultiAoi;
                item.Image = GetMultiAoiImage();
                try
                {
                    _canvas.Refresh(enumRefreshType.All);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                CloseOtherLayerEdit();
                break;
            }
        }