@Override public void trackStep(Point anchor, Point lead, int modifiersEx) { value = new ArcValue(); Arc2D.Double arc2D = (Arc2D.Double) arc.getArc().clone(); ArcUtil.invokeSetting(value, arc2D); double x2D = getView().viewToDrawing(lead).getX(); double y2D = getView().viewToDrawing(lead).getY(); double x2 = ((int) (x2D / 10)) * 10; double y2 = ((int) (y2D / 10)) * 10; value.end = new Point2D.Double(x2, y2); ArcUtil.invokeD(value); ArcUtil.invokeXY(value); ArcUtil.invokeAngleStart(value); ArcUtil.invokeAngleExtent(value); arc.willChange(); arc2D.setAngleStart(value.angleStart); arc2D.setAngleExtent(value.angleExtent); if (value.direction) { arc2D.setFrame(value.x1, value.y1, value.d * 2, value.d * 2); } else { arc2D.setFrame(value.x2, value.y2, value.d * 2, value.d * 2); } arc.setArc(arc2D); arc.changed(); super.trackEnd(anchor, lead, modifiersEx); }