Mega Code Archive

 
Categories / Java / 2D Graphics GUI
 

Clipping is restricting of drawing to a certain area

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