示例#1
0
        public void StartManip(Point p, object sender)
        {
            CurrentPoint = p;

            double d1   = ShapeUtils.Dist(p, new Point(line.X1, line.Y1));
            double d2   = ShapeUtils.Dist(p, new Point(line.X2, line.Y2));
            double dc   = ShapeUtils.Dist(p, new Point((line.X1 + line.X2) / 2, (line.Y1 + line.Y2) / 2));
            double dMin = ShapeUtils.Min(d1, d2, dc);

            if (dMin == d1)
            {
                markerSide = VdSegmentUtil.SegmentMarker.Side1;
            }
            else if (dMin == dc)
            {
                markerSide = VdSegmentUtil.SegmentMarker.Center;
            }
            else if (dMin == d2)
            {
                markerSide = VdSegmentUtil.SegmentMarker.Side2;
            }

            activeMarker = null;
            if (markerSide == VdSegmentUtil.SegmentMarker.Side1)
            {
                activeMarker = selMarker1;
                activeMarker.CaptureMouse();
            }
            else if (markerSide == VdSegmentUtil.SegmentMarker.Side2)
            {
                activeMarker = selMarker2;
                activeMarker.CaptureMouse();
            }
        }
示例#2
0
        void RefreshContactSide(VdSegmentUtil.SegmentMarker side)
        {
            if (_end1 == null || _end2 == null)
            {
                return;
            }

            switch (side)
            {
            case VdSegmentUtil.SegmentMarker.Side1:
                double minDist;
                Point  minAnchorPt;
                ShapeUtils.NearestAnchor(new Point(line.X2, line.Y2),
                                         _end1,
                                         out anchor1,
                                         out minAnchorPt,
                                         out minDist);
                line.X1 = minAnchorPt.X;
                line.Y1 = minAnchorPt.Y;
                break;

            case VdSegmentUtil.SegmentMarker.Side2:
                ShapeUtils.NearestAnchor(new Point(line.X1, line.Y1),
                                         _end2,
                                         out anchor2,
                                         out minAnchorPt,
                                         out minDist);
                line.X2 = minAnchorPt.X;
                line.Y2 = minAnchorPt.Y;
                break;
            }
        }
示例#3
0
        void HandleResize(double deltaX, double deltaY, VdSegmentUtil.SegmentMarker side)
        {
            switch (side)
            {
            case VdSegmentUtil.SegmentMarker.Side1:
                line.X1 += deltaX;
                line.Y1 += deltaY;
                break;

            case VdSegmentUtil.SegmentMarker.Side2:
                line.X2 += deltaX;
                line.Y2 += deltaY;
                break;
            }
        }
示例#4
0
 private void HandleResize(double deltaX, double deltaY, VdSegmentUtil.SegmentMarker side)
 {
     //switch (side)
     //{
     //    case VdSegmentUtil.SegmentMarker.Side1:
     //        line.X1 += deltaX;
     //        line.Y1 += deltaY;
     //        RefreshContactSide(VdSegmentUtil.SegmentMarker.Side1);
     //        break;
     //    case VdSegmentUtil.SegmentMarker.Side2:
     //        line.X2 += deltaX;
     //        line.Y2 += deltaY;
     //        RefreshContactSide(VdSegmentUtil.SegmentMarker.Side2);
     //        break;
     //}
 }
示例#5
0
        public void StartManip(Point p, object sender)
        {
            CurrentPoint = p;

            double d1 = ShapeUtils.Dist(p, new Point(line.X1, line.Y1));
            double d2 = ShapeUtils.Dist(p, new Point(line.X2, line.Y2));
            double dc = ShapeUtils.Dist(p, new Point((line.X1 + line.X2)/2, (line.Y1 + line.Y2)/2));
            double dMin = ShapeUtils.Min(d1, d2, dc);

            if (dMin == d1)
            {
                markerSide = VdSegmentUtil.SegmentMarker.Side1;
            }
            else if (dMin == dc)
            {
                markerSide = VdSegmentUtil.SegmentMarker.Center;
            }
            else if (dMin == d2)
            {
                markerSide = VdSegmentUtil.SegmentMarker.Side2;
            }

            activeMarker = null;
            if (markerSide == VdSegmentUtil.SegmentMarker.Side1)
            {
                activeMarker = selMarker1;
                activeMarker.CaptureMouse();
            }
            else if (markerSide == VdSegmentUtil.SegmentMarker.Side2)
            {
                activeMarker = selMarker2;
                activeMarker.CaptureMouse();
            }
        }