Esempio n. 1
0
        /// <summary>
        /// 根据ptA, ptB的坐标调整line坐标,主要用于裁剪掉位于线框内部的线段
        /// </summary>
        /// <param name="ptA">D1的坐标</param>
        /// <param name="ptB">D2的坐标</param>
        /// <param name="line">连接D1,D2的连线</param>
        protected void AdjustLinkPosition(Link link)
        {
            Rect rtA = link.SrcDevice.GetPosition();
            Rect rtB = link.DstDevice.GetPosition();

            Point ptA = new Point(rtA.Left + link.PTSrcOffset.X, rtA.Top + link.PTSrcOffset.Y);
            Point ptB = new Point(rtB.Left + link.PTDstOffset.X, rtB.Top + link.PTDstOffset.Y);

            Line l = Util.Function.CalCrossPoint(ptA, ptB, rtA, rtB);
            link.PTSRC = new Point(l.X1, l.Y1);
            link.PTDST = new Point(l.X2, l.Y2);

            link.adjustTextPosition();
        }