Esempio n. 1
0
        /// <summary>
        /// 创建控件终止
        /// </summary>
        public void End()
        {
            if (_nodeObject != null)
            {
                INodeEdit node = (INodeEdit)_nodeObject;

                //最后一个点为动态移动点,需要删除
                int count = node.NodeDatas.Count;
                if (count > 0)
                {
                    node.DeleteNode(count - 1);
                }

                //创建成功
                if (node.CreateSuccess)
                {
                    node.IsNodeCreating = false;
                    _studio.ControlPoint.ChangeSelectObj(new List <IDrawObj> {
                        _nodeObject
                    });
                    _nodeObject.Invalidate();
                }
                else
                {
                    _studio.Objs.Remove(_nodeObject);
                }

                _nodeObject = null;
                _studio.Container.Framework.Manager.ResetToolboxPointerFunction();
            }

            _studio.Container.Cursor = Cursors.Default;
            _state      = CreateState.NotCreate;
            _orthoState = OrthoMode.Invalid;
        }
Esempio n. 2
0
        public bool MouseMove(MouseButtons button, PointF location, PointF revertPoint, PointF downPoint)
        {
            if (_studio.IsGrid)
            {
                revertPoint = Tool.GetGridPointF(revertPoint);
            }

            if (_state != CreateState.NotCreate)
            {
                _studio.Container.Cursor = Cursors.Cross;

                if (_isNodeCreate)
                {
                    if (_nodeObject != null)
                    {
                        INodeEdit node      = (INodeEdit)_nodeObject;
                        int       count     = node.NodeDatas.Count;
                        PointF    lastPoint = node.NodeDatas[count - 2];

                        revertPoint = GetOrthoHoriorVert(lastPoint, revertPoint);
                        node.MoveNode(revertPoint, count - 1);
                    }
                }
                else
                {
                    location = GetOrthoSquarePoint(downPoint, location);
                    if (_state == CreateState.HasCreate)
                    {
                        _studio.DrawFrame(downPoint, location, FrameStyle.Thick, false);
                    }
                }

                return(true);
            }

            return(false);
        }
Esempio n. 3
0
        public bool MouseDown(MouseButtons button, PointF location, PointF revertPoint)
        {
            if (_studio.IsGrid)
            {
                revertPoint = Tool.GetGridPointF(revertPoint);
            }

            if (_state == CreateState.BeginCreate)
            {
                _state = CreateState.HasCreate;

                if (_nodeObject != null)
                {
                    End();
                    return(true);
                }

                if (_isNodeCreate)
                {
                    _nodeObject        = (IDrawVector)_studio.CreateDrawObj(_type);
                    _nodeObject.Parant = _studio.Container;
                    ((ObjName)_studio.NameManager).CreateName(_nodeObject);
                    _studio.Objs.Add(_nodeObject);
                    INodeEdit node = (INodeEdit)_nodeObject;
                    node.IsNodeCreating = true;
                    node.AddNode(revertPoint);
                    node.AddNode(revertPoint);
                    _nodeObject.LoadInitializationEvent();
                }

                return(true);
            }

            if (_state == CreateState.HasCreate)
            {
                if (_isNodeCreate && _nodeObject != null)
                {
                    INodeEdit node      = (INodeEdit)_nodeObject;
                    int       count     = node.NodeDatas.Count;
                    PointF    lastPoint = node.NodeDatas[count - 2];

                    revertPoint = GetOrthoHoriorVert(lastPoint, revertPoint);
                    //预防在同一位置重复添加点
                    if (Point.Ceiling(lastPoint) == Point.Ceiling(revertPoint))
                    {
                        return(true);
                    }

                    node.MoveNode(revertPoint, count - 1);
                    node.AddNode(revertPoint);

                    //添加点后创建成功,则直接结束
                    if (node.CreateFinish)
                    {
                        End();
                        return(true);
                    }
                }

                return(true);
            }

            return(false);
        }