intanto grazie per le dritte.

allora, fino a un certo punto ok.
poi mi sono perso.
codice:
        public void capture(ActionEvent e) {
            BufferedImage subBuff = new BufferedImage(w, w, BufferedImage.TYPE_INT_RGB);
            Graphics2D g2d = subBuff.createGraphics();
            g2d.setColor(Color.white);
            Shape shape = new Ellipse2D.Float();
            g2d.setClip(shape);
            g2d.drawImage(buff, xx, yy, w, w, 0, 0, w, w, ImageObserver);
        }
principalmente sul metodo drawImage.
nella javadoc ho visto che ne esistono molte versioni diverse.
io pensavo a questo, che mi sembrava completo come dicevi.
solo che richiede un oggetto ImageObserver.....