import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.VolatileImage;
import java.io.File;
import java.io.IOException;

public class CompositeTest {
    public static void main(String[] args) throws IOException {
        VolatileImage vi = GraphicsEnvironment.getLocalGraphicsEnvironment()
                .getDefaultScreenDevice().getDefaultConfiguration()
                .createCompatibleVolatileImage(100, 100);
        Graphics2D g2 = vi.createGraphics();
        do {
            g2.setColor(Color.BLUE);
            g2.fillRect(0, 0, 50, 50);
            g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC, 0.5f));
            g2.setColor(Color.RED);
            g2.fillOval(20, 20, 50, 50);
        } while (vi.contentsLost());

        BufferedImage bi = vi.getSnapshot();
        ImageIO.write(bi, "png", new File("res.png"));
    }
}
