Clip another area : Clip « 2D Graphics GUI « Java






Clip another area

Clip another area
   

import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.Ellipse2D;

import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.border.TitledBorder;

public class ClipArea extends JFrame {
  MyCanvas canvas;

  JRadioButton clipButton, clipFurButton;

  public ClipArea() {
    super();
    Container contentPane = getContentPane();

    canvas = new MyCanvas();
    contentPane.add(canvas);

    JPanel panel = new JPanel();
    panel.setLayout(new GridLayout(1, 2));
    clipButton = new JRadioButton("Clip", true);
    clipButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        canvas.clip = true;
        canvas.clipFurther = false;
        canvas.repaint();
      }
    });
    clipFurButton = new JRadioButton("Clip Further");
    clipFurButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        canvas.clipFurther = true;
        canvas.repaint();
      }
    });
    ButtonGroup group = new ButtonGroup();
    group.add(clipButton);
    group.add(clipFurButton);

    panel.add(clipButton);
    panel.add(clipFurButton);
    contentPane.add(BorderLayout.SOUTH, panel);

    // 4. Add a window listener to close the frame properly.
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });
    pack(); 
    setVisible(true); 
  }

  public static void main(String arg[]) {
    new ClipArea();
  }
}

class MyCanvas extends JPanel{
  boolean clip = true;

  boolean clipFurther = false;

  MyCanvas() {
    setSize(300, 300);
    setBackground(Color.white);
  }

  public void paint(Graphics g) {
    Graphics2D g2 = (Graphics2D) g;

    int w = getSize().width;
    int h = getSize().height;

    if (clip) {
      Ellipse2D e = new Ellipse2D.Float(w / 4.0f, h / 4.0f, w / 2.0f,
          h / 2.0f);
      g2.setClip(e);

      g2.setColor(Color.yellow);
      g2.fillRect(0, 0, w, h);
    }

    if (clipFurther) {
      Rectangle r = new Rectangle(w / 2, h / 2, w / 2, h / 2);
      g2.clip(r);

      g2.setColor(Color.green);
      g2.fillRect(0, 0, w, h);
    }
  }
}


           
         
    
    
  








Related examples in the same category

1.Clip the areaClip the area
2.Clip ImageClip Image
3.Setting the Clipping Area with a Shape
4.Copy Area Performance
5.Clipping is restricting of drawing to a certain area.Clipping is restricting of drawing to a certain area.
6.set Clip and get Clip
7.Represents a clipping rectangle in a prefuse DisplayRepresents a clipping rectangle in a prefuse Display
8.Clips the specified line to the given rectangle.