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