/// <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); }
/// <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); } }
/// <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 }