Esempio n. 1
0
        public void SetFollowDrawObject(int handleNumber, DeviceDrawObjectBase draw, int portindex)
        {
            if (handleNumber <= 1)
            {
                handleNumber    = 1;
                startDrawObject = draw;
                startportindex  = portindex;
                if (startDrawObject == null)
                {
                    return;
                }
                startDrawObject.OnHandleMove += i =>
                {
                    animationList.Clear();
                    AddAnimation();
                };
            }

            if (handleNumber >= _pointArray.Count)
            {
                handleNumber  = _pointArray.Count;
                endDrawObject = draw;
                endportindex  = portindex;
                if (endDrawObject == null)
                {
                    return;
                }

                endDrawObject.OnHandleMove += i =>
                {
                    animationList.Clear();
                    AddAnimation();
                };
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 获取该物体在世界坐标下的变换物体
        /// </summary>
        /// <returns></returns>
        public new  DrawLineObject  GetWorldDrawObject()
        {
            PointF parents           = new PointF(Parent.Rectangle.X, Parent.Rectangle.Y);
            DeviceDrawObjectBase par = Parent;

            while (par.Parent != null)
            {
                par        = par.Parent;
                parents.X += par.Rectangle.X;
                parents.Y += par.Rectangle.Y;
            }

            if (Parent != null)//表示有设备父实体 则要求应用
            {
                ////获取父物体的世界坐标
                //var parentPosition = new PointF(Parent.Rectangle.X, Parent.Rectangle.Y);
                ////应用缩放 获取缩放比
                //var zoomw = Parent.Width / Parent.ViewBox_w;
                //var zoomh = Parent.Height / Parent.ViewBox_h;

                //吴悠修改
                //获取父物体的世界坐标
                var parentPosition = new PointF(parents.X, parents.Y);
                //应用缩放 获取缩放比
                var zoomw = par.Width / par.ViewBox_w;
                var zoomh = par.Height / par.ViewBox_h;
                if (float.IsNaN(zoomw) || float.IsInfinity(zoomw))
                {
                    zoomw = 0;
                }
                if (float.IsNaN(zoomh) || float.IsInfinity(zoomh))
                {
                    zoomh = 0;
                }

                // 固定左上角的点缩放
                var zoomStart = new PointF(_startPoint.X * zoomw, _startPoint.Y * zoomh);
                var zoomEnd   = new PointF(_endPoint.X * zoomw, _endPoint.Y * zoomh);

                //移动到世界坐标
                var moveStart = new PointF(parentPosition.X + zoomStart.X, parentPosition.Y + zoomStart.Y);
                var moveEnd   = new PointF(parentPosition.X + zoomEnd.X, parentPosition.Y + zoomEnd.Y);

                //最终旋转 获取父物体的位置
                var centerTemp = Parent.GetCenter();
                var drawPoint1 = RotatePoint(centerTemp, moveStart, _angle);
                var drawPoint2 = RotatePoint(centerTemp, moveEnd, _angle);

                return(new DrawLineObject(drawPoint1.X, drawPoint1.Y, drawPoint2.X, drawPoint2.Y));
            }

            return(this);
        }
Esempio n. 3
0
        /// <summary>
        /// 通过端口id寻找端口
        /// </summary>
        /// <param name="deviceid"></param>
        /// <param name="port"></param>
        /// <returns></returns>
        public bool GetDeviceDrawObjectBydeviceId(string deviceid, out DeviceDrawObjectBase port)
        {
            port = null;
            if (deviceid == _EntityId)
            {
                port = this;
                return(true);
            }

            if (deviceDrawObjectBases != null)
            {
                foreach (var deviceDrawObjectBase in deviceDrawObjectBases)
                {
                    return(deviceDrawObjectBase.GetDeviceDrawObjectBydeviceId(deviceid, out port));
                }
            }

            return(false);
        }