Use AlphaComposite SRC_OUT in Java
Description
The following code shows how to use AlphaComposite SRC_OUT.
Example
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import java.awt.image.BufferedImage;
// w w w . ja v a 2 s .c o m
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Main extends JFrame {
public Main() {
getContentPane().add(new DrawingCanvas());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,500);
setVisible(true);
}
public static void main(String arg[]) {
new Main();
}
}
class DrawingCanvas extends JPanel{
float alphaValue = 1.0f;
int compositeRule = AlphaComposite.SRC_OUT;
AlphaComposite ac;
DrawingCanvas() {
setSize(300, 300);
setBackground(Color.white);
}
public void paint(Graphics g) {
Graphics2D g2D = (Graphics2D) g;
int w = getSize().width;
int h = getSize().height;
BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
Graphics2D big = bi.createGraphics();
ac = AlphaComposite.getInstance(compositeRule, alphaValue);
big.setColor(Color.red);
big.drawString("Destination", w / 4, h / 4);
big.fill(new Ellipse2D.Double(0, h / 3, 2 * w / 3, h / 3));
big.setColor(Color.blue);
big.drawString("Source", 3 * w / 4, h / 4);
big.setComposite(ac);
big.fill(new Ellipse2D.Double(w / 3, h / 3, 2 * w / 3, h / 3));
g2D.drawImage(bi, null, 0, 0);
}
}
The code above generates the following result.