Java tutorial
import java.awt.AlphaComposite; import java.awt.BorderLayout; import java.awt.Canvas; import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.geom.Ellipse2D; import java.awt.image.BufferedImage; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class AlphaCompositeSRCOUT extends JFrame { public AlphaCompositeSRCOUT() { getContentPane().add(new DrawingCanvas()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(500, 500); setVisible(true); } public static void main(String arg[]) { new AlphaCompositeSRCOUT(); } } 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); } }