コード例 #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>
 /// 删除
 /// </summary>
 /// <param name="bz"></param>
 public void Del(BezierLine bz)
 {
     if (bz == null)
     {
         return;
     }
     if (contentsCanvas.Children.Contains(bz))
     {
         contentsCanvas.Children.Remove(bz);
     }
     if (BzLines.Contains(bz))
     {
         BzLines.Remove(bz);
     }
     if ((bz.LeftElement as MLParatItemLayout) != null)
     {
         (bz.LeftElement as MLParatItemLayout).Del(bz);
     }
     if (bz.RightElement as MLParatItemLayout != null)
     {
         (bz.RightElement as MLParatItemLayout).Del(bz);
     }
     bz.ClearEndBind();
     bz.ClearStartBind();
     bz.Dispose();
     bz = null;
 }
コード例 #3
0
 /// <summary>
 /// 曲线
 /// </summary>
 /// <param name="bz"></param>
 public void Add(BezierLine bz)
 {
     //bz.Stroke = new SolidColorBrush(Colors.White);
     bz.StrokeThickness = 5;
     contentsCanvas.Children.Add(bz);
     BzLines.Add(bz);
 }
コード例 #4
0
 /// <summary>
 /// 鼠标离开事件
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void contentsCanvas_MouseLeave(object sender, MouseEventArgs e)
 {
     ///取消移动设定
     isMove = false;
     ///取消框选
     isToRect = false;
     HidenRect();
     //contentsCanvas.ReleaseMouseCapture();
     if (creatBz != null)
     {
         Del(creatBz);
     }
     creatBz      = null;
     iscreateBz   = false;
     isMoveCanvas = false;
     isMoveBoxs   = false;
 }
コード例 #5
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);
            }
        }
コード例 #6
0
        /// <summary>
        /// 鼠标抬起
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void contentsCanvas_MouseUp(object sender, MouseButtonEventArgs e)
        {
            this.Cursor = Cursors.Arrow;
            //contentsCanvas.ReleaseMouseCapture();
            ///如果是开启代码窗口的话
            if (!isMoveCanvas && e.RightButton == MouseButtonState.Released && e.LeftButton == MouseButtonState.Released && e.ChangedButton == MouseButton.Right)
            {
                ShowTree();
            }
            else if (iscreateBz && creatBz != null)
            {
                if (currentMouseOverFunctionBox != null && currentMouseOverFunctionBox.MouseMoveUI != null &&
                    currentMouseOverFunctionBox.MouseMoveUI != creatBz.LeftElement && currentMouseOverFunctionBox.MouseMoveUI
                    != creatBz.RightElement && currentMouseOverFunctionBox.MouseMoveUI.IsCanLink(creatBz))
                {
                    LinkBezier(creatBz, previous, currentMouseOverFunctionBox.MouseMoveUI, false);
                    creatBz = null;
                }
                else if (creatBz != null)
                {
                    Del(creatBz);
                    creatBz = null;
                }
            }
            else if (!isMoveBoxs && e.LeftButton == MouseButtonState.Released && currentMouseOverFunctionBox != null &&
                     currentMouseOverFunctionBox.MouseMoveUI == null && e.ChangedButton == MouseButton.Left)
            {
                SelectBox(currentMouseOverFunctionBox);
            }

            iscreateBz   = false;
            isMoveCanvas = false;
            isMoveBoxs   = false;
            ///取消移动设定
            isMove = false;
            ///取消框选
            isToRect = false;
            HidenRect();
        }