/// <summary>
 /// 设置贝塞尔曲线
 /// </summary>
 /// <param name="OverPoint">贝塞尔曲线的结束的点</param>
 public void SetBezierLine(Point OverPoint, XAribute.XPositonStyle position)
 {
     #region MyRegion
     //if (StartPoint != null)
     //{
     //    if (OverPoint.X >= StartPoint.X && OverPoint.Y >= StartPoint.Y)
     //    {
     //        SetBezierOver(1, OverPoint);
     //    }
     //    else if (OverPoint.X <= StartPoint.X && OverPoint.Y >= StartPoint.Y)
     //    {
     //        SetBezierOver(2, OverPoint);
     //    }
     //    else if (OverPoint.X <= StartPoint.X && OverPoint.Y >= StartPoint.Y)
     //    {
     //        SetBezierOver(3, OverPoint);
     //    }
     //    else if (OverPoint.X >= StartPoint.X && OverPoint.Y <= StartPoint.Y)
     //    {
     //        SetBezierOver(4, OverPoint);
     //    }
     //}
     #endregion
     SetBezierOver(position, OverPoint);
 }
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="Parameter_name"></param>
 /// <param name="MyCanLinkType"></param>
 /// <param name="MyXAttributeSpec"></param>
 /// <param name="MyXAttributeType"></param>
 /// <param name="MyXPositonStyle"></param>
 /// <param name="MyHittext"></param>
 public XAributeItem(string Parameter_name, XAribute.CanLinkType MyCanLinkType, XAribute.XAttributeSpec MyXAttributeSpec,
                     XAribute.XAttributeType MyXAttributeType, XAribute.XPositonStyle MyXPositonStyle, string MyHittext, string MyLastExText)
 {
     this.Parameter_name   = Parameter_name;
     this.MyCanLinkType    = MyCanLinkType;
     this.MyXAttributeSpec = MyXAttributeSpec;
     this.MyXAttributeType = MyXAttributeType;
     this.MyXPositonStyle  = MyXPositonStyle;
     this.MyHittext        = MyHittext;
     this.MyLastExText     = MyLastExText;
 }
 /// <summary>
 /// 当父控件移动的时候调整贝塞尔曲线的位置(弃用的方法)
 /// </summary>
 /// <param name="position">点的坐标</param>
 /// <param name="dirtype">属性的方向类型</param>
 public void BezierPositionChange(Point position, XAribute.XPositonStyle dirtype)
 {
     AdjustBezierLine();
     //if (dirtype == StartPoint.positionType)
     //{
     //    SetBezierStart(dirtype, position);
     //}
     //else
     //{
     //    SetBezierOver(dirtype, position);
     //}
 }
Ejemplo n.º 4
0
        /// <summary>
        /// 读取XML中的属性内容
        /// </summary>
        /// <param name="aribute">包含属性的XML节点</param>
        /// <param name="box">属性所在的CodeBox对象</param>
        /// <returns></returns>
        public static void ReadXAributeObject(XmlNode node, PicTabPage pic)
        {
            XmlElement aributeElement = (XmlElement)node;
            int        Id             = int.Parse(aributeElement.GetAttribute("ID"));
            string     Title          = aributeElement.GetAttribute("Title");

            XAribute.XAttributeType SelectType          = XAribute.XAttributeTypeMapping(aributeElement.GetAttribute("PointTypeitem"));
            XAribute.XAttributeSpec SelectSpc           = XAribute.XAttributeSpecMapping(aributeElement.GetAttribute("ListTypeitem"));
            XAribute.XPositonStyle  SelectPositionStyle = XAribute.XPositonStyleMapping(aributeElement.GetAttribute("PositionTypeitem"));
            XAribute.CanLinkType    CanLinkNum          = XAribute.CanLinkTypeMapping(aributeElement.GetAttribute("LinkTypeitem"));
            string Hint   = aributeElement.GetAttribute("TipTypeitem");
            string ExName = aributeElement.GetAttribute("LastExTexteitem");

            XObject.OpenType opentype = XObject.OpenTypeMapping(aributeElement.GetAttribute("OpenType"));
            ///通过内置函数加载属性
            XAribute bute = pic.LoadXAribute(SelectType, SelectSpc, SelectPositionStyle, Title, CanLinkNum, Hint, ExName, Id, opentype);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 读取XML中的属性内容
        /// </summary>
        /// <param name="aribute">包含属性的XML节点</param>
        /// <param name="box">属性所在的CodeBox对象</param>
        /// <returns></returns>
        public static void ReadXAributeObject(XmlNode node, CodeBox box)
        {
            XmlElement aributeElement = (XmlElement)node;
            int        Id             = int.Parse(aributeElement.GetAttribute("ID"));
            string     Title          = aributeElement.GetAttribute("Title");

            XAribute.XAttributeType SelectType          = XAribute.XAttributeTypeMapping(aributeElement.GetAttribute("PointTypeitem"));
            XAribute.XAttributeSpec SelectSpc           = XAribute.XAttributeSpecMapping(aributeElement.GetAttribute("ListTypeitem"));
            XAribute.XPositonStyle  SelectPositionStyle = XAribute.XPositonStyleMapping(aributeElement.GetAttribute("PositionTypeitem"));
            XAribute.CanLinkType    CanLinkNum          = XAribute.CanLinkTypeMapping(aributeElement.GetAttribute("LinkTypeitem"));
            string Hint   = aributeElement.GetAttribute("TipTypeitem");
            string ExName = aributeElement.GetAttribute("LastExTexteitem");

            XObject.OpenType opentype = XObject.OpenTypeMapping(aributeElement.GetAttribute("OpenType"));
            ///通过内置函数加载属性
            XAribute bute = box.LoadAttribute(SelectType, SelectSpc, SelectPositionStyle, Title, CanLinkNum, Hint, ExName, Id, opentype);

            if (bute != null && ISXAributeToSaveValue(bute))
            {
                bute.SetValueTextBox(aributeElement.GetAttribute("Value"));
            }
        }
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="id">id</param>
        /// <param name="LineColor">线条的颜色</param>
        /// <param name="onePoint">坐标</param>
        /// <param name="position">位置信息</param>
        public BezierLine(int id, Color LineColor, Point onePoint, XAribute.XPositonStyle position)
        {
            ///赋予笔刷
            connector.Stroke = new SolidColorBrush(LineColor);
            ///赋予笔触
            connector.StrokeThickness = _strokeThickness;
            ///实例化
            connectorGeometry       = new PathGeometry();
            connectorPoints         = new PathFigure();
            connectorCurve          = new BezierSegment();
            StartPoint.position     = onePoint;
            StartPoint.positionType = position;
            EndPoint.position       = onePoint;

            ///设置贝塞尔曲线的开始点
            connectorPoints.StartPoint = StartPoint.position;
            SetBezierLine(EndPoint.position, position);
            connectorPoints.Segments.Add(connectorCurve);
            connectorGeometry.Figures.Add(connectorPoints);
            connector.Data = connectorGeometry;

            this.Id = id;
        }
        /// <summary>
        /// 设置的是起始点(弃用的方法)
        /// </summary>
        /// <param name="position">位置类型</param>
        /// <param name="fistPoint">点的坐标</param>
        protected void SetBezierStart(XAribute.XPositonStyle position, Point fistPoint)
        {
            double cur = (fistPoint.Y - EndPoint.position.Y) / ToolHelp.DisPoint(fistPoint, EndPoint.position) / 7;
            double dis = cur > maxdis ? maxdis : cur;

            dis = dis < mindis ? mindis : dis;
            StartPoint.position = fistPoint;
            switch (position)
            {
            case XAribute.XPositonStyle.Left:
                connectorPoints.StartPoint = StartPoint.position;
                connectorCurve.Point1      = new Point(StartPoint.position.X - dis, StartPoint.position.Y);
                connectorCurve.Point2      = new Point(EndPoint.position.X + dis, EndPoint.position.Y);
                //connectorCurve.Point3 = OverPoint;
                break;

            case XAribute.XPositonStyle.right:
                connectorPoints.StartPoint = StartPoint.position;
                connectorCurve.Point1      = new Point(StartPoint.position.X + dis, StartPoint.position.Y);
                connectorCurve.Point2      = new Point(EndPoint.position.X - dis, EndPoint.position.Y);
                //connectorCurve.Point3 = OverPoint;
                break;
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 从文件加载一个属性
        /// </summary>
        /// <param name="xt">属性类型</param>
        /// <param name="xs">属性的集合类型</param>
        /// <param name="xp">复制匡的位置是在左边还是右边</param>
        /// <param name="paramterName">属性名称</param>
        /// <param name="clt">连接方式</param>
        /// <param name="tiptext">提示信息</param>
        /// <param name="LastExName">属性类型</param>
        /// <param name="id">属性框ID</param>
        /// <param name="opentype">公开类型</param>
        public XAribute LoadXAribute(XAribute.XAttributeType xt, XAribute.XAttributeSpec xs, XAribute.XPositonStyle xp, string paramterName, XAribute.CanLinkType clt, string tiptext, string LastExName, int id, OpenType opentype)
        {
            XAribute xb = new XAribute(id, paramterName, xt, xs, xp, this.ChileEventCallBack, clt, LastExName);

            xb.Hint       = tiptext;
            xb.MyOpenType = opentype;
            ///绑定标题改变事件
            xb.TitleChange += (e, o, v) =>
            {
                ///修改Title
                return(ModifyPropertyTitle(o, v));
            };
            xb.ExNameChange += (s, o, v) =>
            {
                ///修改ExName
                this.ModifyPropetyExName((s as XAribute).Title, v);
            };
            ///检测是否存在
            if (!ListXAributes.Contains(xb))
            {
                ListXAributes.Add(xb);
                return(xb);
            }
            return(null);
        }
 /// <summary>
 /// 构造函数
 /// </summary>
 public BezierPoint()
 {
     positionType = XAribute.XPositonStyle.Left;
 }
 /// <summary>
 /// 设置贝塞尔曲线的控制点
 /// </summary>
 /// <param name="EndPoint">结束点</param>
 private void SetBezierOver(XAribute.XPositonStyle position, Point OverPoint)
 {
     EndPoint.position     = OverPoint;
     EndPoint.positionType = position;
     AdjustBezierLine();
 }