コード例 #1
0
        /// <summary>
        /// 鼠标按下
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void contentsCanvas_MouseDown(object sender, MouseButtonEventArgs e)
        {
            ///取消连线
            if (e.LeftButton == MouseButtonState.Pressed && e.RightButton == MouseButtonState.Released &&
                isPressAlt && currentMouseOverFunctionBox != null && currentMouseOverFunctionBox.MouseMoveUI != null)
            {
                removeMLParamitemBezierLine(currentMouseOverFunctionBox.MouseMoveUI);
                return;
            }
            if (e.RightButton == MouseButtonState.Pressed && e.LeftButton == MouseButtonState.Released &&
                currentMouseOverFunctionBox == null)
            {
                isMove     = true;
                forntPoint = e.GetPosition(contentsCanvas);
            }
            else if (e.LeftButton == MouseButtonState.Pressed && currentMouseOverFunctionBox != null &&
                     currentMouseOverFunctionBox.MouseMoveUI == null)
            {
                isMove     = true;
                forntPoint = e.GetPosition(contentsCanvas);
            }
            else if (e.LeftButton == MouseButtonState.Pressed && e.RightButton == MouseButtonState.Released &&
                     currentMouseOverFunctionBox == null)
            {
                cancleSelectBox();
                isToRect   = true;
                forntPoint = e.GetPosition(contentsCanvas);
            }
            else if (e.LeftButton == MouseButtonState.Pressed && e.RightButton == MouseButtonState.Released &&
                     currentMouseOverFunctionBox != null && currentMouseOverFunctionBox.MouseMoveUI != null)
            {
                HiddenTree();
                iscreateBz = true;
                creatBz    = null;

                creatBz  = new BezierLine();
                previous = currentMouseOverFunctionBox.MouseMoveUI;
                if (currentMouseOverFunctionBox.MouseMoveUI as BezierLinkLayout.ScriptIParameterLayout.InputParaItemLayout == null)
                {
                    creatPoint = e.GetPosition(contentsCanvas);
                    creatBz.BindPointEnd(this, "CreatPoint");
                    creatBz.BindPointStart(currentMouseOverFunctionBox.MouseMoveUI, "LinkPosition");
                    //startisleft = false;
                }
                else
                {
                    creatBz.BindPointEnd(currentMouseOverFunctionBox.MouseMoveUI, "LinkPosition");
                    creatPoint = e.GetPosition(contentsCanvas);
                    creatBz.BindPointStart(this, "CreatPoint");
                    //startisleft = true;
                }

                if (creatBz != null)
                {
                    Add(creatBz);
                    Canvas.SetZIndex(creatBz, -10);
                }
                //contentsCanvas.CaptureMouse(); //限制鼠标
            }
        }
コード例 #2
0
        /// <summary>
        /// 连接贝塞尔曲线到2个点
        /// </summary>
        /// <param name="bz"></param>
        /// <param name="mlp1"></param>
        /// <param name="mlp2"></param>
        public void LinkBezier(BezierLine bz, MLParatItemLayout mlp1, MLParatItemLayout mlp2, bool isAddtoCanvas = true)
        {
            if (bz == null || mlp1 == null || mlp2 == null)
            {
                return;
            }
            BezierLine ol = mlp1.SetLink(bz);

            if (ol != null)
            {
                Del(ol);
            }
            ol = mlp2.SetLink(bz);
            if (ol != null)
            {
                Del(ol);
            }
            bz.ClearStartBind();
            bz.ClearEndBind();
            if (mlp1 as BezierLinkLayout.ScriptIParameterLayout.InputParaItemLayout != null)
            {
                bz.BindPointStart(mlp2, "LinkPosition");
                bz.BindPointEnd(mlp1, "LinkPosition");
            }
            else
            {
                bz.BindPointStart(mlp1, "LinkPosition");
                bz.BindPointEnd(mlp2, "LinkPosition");
            }

            IParatItem ipl = (bz.LeftElement.DataContext as IParatItem);
            IParatItem ipr = (bz.RightElement.DataContext as IParatItem);

            ipl.LinkIParatItem = ipr;
            ipr.LinkIParatItem = ipl;
            bz.Color           = ipl.Color;
            if (isAddtoCanvas)
            {
                Add(bz);
            }
        }