Exemple #1
0
        /// <summary>
        /// 连接二个结点
        /// </summary>
        /// <param name="start"></param>
        /// <param name="end"></param>
        public void Connect(Elements.BaseElement start, Elements.BaseElement end)
        {
            var line = new Elements.ConnectLine(this);

            line.StartElement = start;
            line.Connect(end);
        }
Exemple #2
0
        /// <summary>
        /// 检查二个元素是否可以相连
        /// </summary>
        /// <param name="srcElement"></param>
        /// <param name="tarElement"></param>
        /// <returns></returns>
        public bool CheckCanLine(Elements.BaseElement srcElement, Elements.BaseElement tarElement)
        {
            if (tarElement.Model.Part.IsStart)
            {
                return(false);
            }

            return(!srcElement.Model.Outs.Contains(tarElement.Model));
        }
Exemple #3
0
        /// <summary>
        /// 连接终结点
        /// </summary>
        /// <param name="el"></param>
        public void Connect(Elements.BaseElement el)
        {
            if (el != null && el != StartElement &&
                backGrid.CheckCanLine(StartElement, el))
            {
                EndElement = el;
                EndPoint   = el.InPoint;

                StartElement.Model.Outs.Add(el.Model);
                el.Model.Ins.Add(StartElement.Model);
                Position();

                if (StartElement is Unit)
                {
                    ((Unit)StartElement).RemoveUnitHandle += () =>
                    {
                        this.Hide();
                    };
                }
                if (el is Unit)
                {
                    ((Unit)el).RemoveUnitHandle += () =>
                    {
                        this.Hide();
                    };
                }

                if (!StartElement.Model.Part.IsEnd)
                {
                    ContextMenuService.SetContextMenu(this, menu);//绑定菜单
                }
                if (Change != null)
                {
                    Change(this, null);
                }

                backGrid.BackCanvas.MouseMove         -= new MouseEventHandler(BackCanvas_MouseMove);
                backGrid.BackCanvas.MouseLeftButtonUp -= new MouseButtonEventHandler(BackCanvas_MouseLeftButtonUp);
            }
        }
Exemple #4
0
        /// <summary>
        /// 添加元素
        /// </summary>
        /// <param name="el"></param>
        public void AddElement(Elements.BaseElement el)
        {
            if (!elements.Contains(el))
            {
                this.BackCanvas.Children.Add(el);
                elements.Add(el);
                el.CanvasGrid = this;

                el.ResetPosition(this);
                if (Change != null)
                {
                    el.Change += Change;
                }

                CheckCanvasGrid();

                //如果是出口,则直接与终结点连接
                if (el.Model.Part.IsEnd)
                {
                    Connect(el, EndPoint);
                }
            }
        }