/// <summary>
        /// 初始化基本信息
        /// </summary>
        protected override void InitBaseInfo()
        {
            base.InitBaseInfo();
            ///创建函数入口代码块
            FunctionEnterBox            = CreateXCodeBox("方法入口", CenterPoint, CodeBox.XAType.XFunctionEnter);
            FunctionEnterBox.OpenButton = 2;
            FunctionEnterBox.AddXExcXAribute();
            FunctionEnterBox.XAributeChangeMessage = () => { XAributeChangeMessage(this); };///属性消息变更通知
            ///创建函数出口代码块
            CodeBox functionExc = CreateXCodeBox("方法出口", new Point(CenterPoint.X + 250, CenterPoint.Y), CodeBox.XAType.XFunctionExc);

            functionExc.OpenButton = 1;
            functionExc.AddXEnterXAribute();
            functionExc.XAributeChangeMessage = () => { XAributeChangeMessage(this); };///属性消息变更通知
            ///保存函数出口代码块的地址
            FunctionExcBox = functionExc;

            ///添加初始连线
            XAribute   FirstXa      = FunctionEnterBox.GetRightExc()[0];
            XAribute   SecondXa     = functionExc.GetLeftEnter();
            BezierLine MyBezierLine = new BezierLine(CreateBezierID(), FirstXa.BorderColor, FirstXa.GetWorldPosition(), FirstXa.SelectPositionStyle);

            AddBezierLine(MyBezierLine);
            FirstXa.AddBezierLine(MyBezierLine);
            MyBezierLine.StartPoint.LinkAribute = FirstXa;
            SecondXa.AddBezierLine(MyBezierLine);
            MyBezierLine.EndPoint.LinkAribute = SecondXa;
            MyBezierLine.SetBezierLine(SecondXa.GetWorldPosition(), SecondXa.SelectPositionStyle);
        }
Beispiel #2
0
        /// <summary>
        /// 从文件读取的时候添加一个贝塞尔曲线
        /// </summary>
        /// <param name="bz">贝塞尔曲线对象</param>
        public bool ReadCreateBezierLine(BezierLine bz, int startID, int endID, int startfatherID, int endfatherID)
        {
            XAribute startPoint = GetXAributeByID(startID, startfatherID);
            XAribute endPoint   = GetXAributeByID(endID, endfatherID);

            if (startPoint != null && endPoint != null)
            {
                startPoint.AddBezierLine(bz);
                endPoint.AddBezierLine(bz);
                ///设置贝塞尔曲线信息
                bz.DirectSetBezierLineTwoPoint(startPoint, endPoint);
                ///将贝塞尔曲线添加入显示
                AddBezierLine(bz);
                return(true);
            }
            else
            {
                return(false);
            }
        }
Beispiel #3
0
 /// <summary>
 /// 鼠标抬起的时候
 /// </summary>
 /// <param name="e"></param>
 protected override void OnMouseUp(MouseButtonEventArgs e)
 {
     base.OnMouseUp(e);
     ///释放鼠标焦点
     this.ReleaseMouseCapture();
     #region 取消框选
     MyPanel.IsToSelect = false;
     #endregion
     #region 对贝塞尔曲线的操作
     ///成功连接
     if (isDrawBezier && isOverAribute && SecondXa != null && SecondXa.IsCanLin(FirstXa))
     {
         #region 将属性和连线的关系赋值
         FirstXa.AddBezierLine(MyBezierLine);
         MyBezierLine.StartPoint.LinkAribute = FirstXa;
         SecondXa.AddBezierLine(MyBezierLine);
         MyBezierLine.EndPoint.LinkAribute = SecondXa;
         MyBezierLine.SetBezierLine(SecondXa.GetWorldPosition(), SecondXa.SelectPositionStyle);
         #endregion
     }
     ///失败连接
     else if (isDrawBezier)
     {
         ///删除失败的贝塞尔曲线
         DelBezierLine(MyBezierLine);
     }
     ///清空贝塞尔曲线对象,防止对此的再次操作
     if (MyBezierLine != null)
     {
         MyBezierLine = null;
         #region 初始化信息
         FirstXa       = null;
         SecondXa      = null;
         isOverAribute = false;
         isDrawBezier  = false;
         SecondXa      = null;
         #endregion
     }
     #endregion
 }