import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Ellipse2D;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class Clipping extends JPanel implements ActionListener {
int x = 8, y = 8, radius = 90;
Timer timer;
Image image = new ImageIcon("yourImage.png").getImage();
double delta[] = { 3, 3 };
public Clipping() {
timer = new Timer(15, this);
timer.start();
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setClip(new Ellipse2D.Double(x, y, radius, radius));
g2d.drawImage(image, 5, 5, null);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.add(new Clipping());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
int w = 400;
int h = 400;
if (x < 0) {
delta[0] = Math.random() % 4 + 5;
} else if (x > w - radius) {
delta[0] = -(Math.random() % 4 + 5);
}
if (y < 0) {
delta[1] = Math.random() % 4 + 5;
} else if (y > h - radius) {
delta[1] = -(Math.random() % 4 + 5);
}
x += delta[0];
y += delta[1];
repaint();
}
}