/** * Moves and scales this <code>ShapeGroup</code> to the specified anchor. */ protected void moveAndScale(Rectangle2D anchorDest){ Rectangle2D anchorSrc = getAnchor(); double scaleX = (anchorSrc.getWidth() == 0) ? 0 : anchorDest.getWidth() / anchorSrc.getWidth(); double scaleY = (anchorSrc.getHeight() == 0) ? 0 : anchorDest.getHeight() / anchorSrc.getHeight(); setExteriorAnchor(anchorDest); for (HSLFShape shape : getShapes()) { Rectangle2D chanchor = shape.getAnchor(); double x = anchorDest.getX()+(chanchor.getX()-anchorSrc.getX())*scaleX; double y = anchorDest.getY()+(chanchor.getY()-anchorSrc.getY())*scaleY; double width = chanchor.getWidth()*scaleX; double height = chanchor.getHeight()*scaleY; shape.setAnchor(new Rectangle2D.Double(x, y, width, height)); } }