コード例 #1
0
        public IContextMenuArgProvider Show(string argProviderUI)
        {
            if (argProviderUI == null)
            {
                return(null);
            }
            string[] parts    = argProviderUI.Split(':');
            Assembly assemlby = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + parts[0]);
            IContextMenuArgProvider argProvider = assemlby.CreateInstance(parts[1]) as IContextMenuArgProvider;

            _hostForm = new Form();
            _hostForm.StartPosition = FormStartPosition.Manual;
            (argProvider as UserControl).BorderStyle = BorderStyle.None;
            _hostForm.BackColor = Color.FromArgb(218, 231, 247);
            (argProvider as Control).BackColor = Color.FromArgb(218, 231, 247);
            _hostForm.Controls.Add(argProvider as Control);
            _hostForm.Text            = "参数设置...";
            _hostForm.FormBorderStyle = FormBorderStyle.SizableToolWindow;
            _hostForm.Width           = (argProvider as Control).Width;
            _hostForm.Height          = (argProvider as Control).Height + 32;
            Point position = new Point(_session.SmartWindowManager.ViewLeftUpperCorner.X + 62,
                                       _session.SmartWindowManager.ViewLeftUpperCorner.Y + 29);

            _hostForm.Location = position;
            _hostForm.Show(_session.SmartWindowManager.MainForm as Form);
            _hostForm.FormClosed += new FormClosedEventHandler(_hostForm_FormClosed);
            return(argProvider);
        }
コード例 #2
0
        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;
            }
        }