import java.awt.AlphaComposite;
import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class AlphaCompositeSrcDemo extends JFrame {
private Image demoImage;
private Image transparentObjectImage;
public AlphaCompositeSrcDemo() {
demoImage = AlphaCompositeSrcDemo.createSimpleImage(100, 100);
transparentObjectImage = createTransparentObjectImage(false);
final JPanel panel = new JPanel() {
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g.create();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.drawImage(demoImage, 30, 30, null);
g2.drawImage(transparentObjectImage, 50, 50, null);
g2.dispose();
}
};
final JCheckBox check = new JCheckBox("aktivier Top Objekt");
this.getContentPane().add(panel, BorderLayout.CENTER);
this.getContentPane().add(check, BorderLayout.SOUTH);
check.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
transparentObjectImage = createTransparentObjectImage(check.isSelected());
panel.repaint();
}
});
}
private BufferedImage createTransparentObjectImage(boolean round) {
BufferedImage newImage = new BufferedImage(200, 200, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = newImage.createGraphics();
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setColor(new Color(0, 255, 0, 220));
g.fillRect(0, 0, 100, 100);
if (round) {
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC));
g.setColor(new Color(255, 0, 0, 20));
g.fillRect(20, 20, 100, 100);
}
g.dispose();
return newImage;
}
public static BufferedImage createSimpleImage(int w, int h) {
BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
g.setColor(Color.BLUE);
g.fillRect(0, 0, w, h);
g.setColor(Color.YELLOW);
g.setStroke(new BasicStroke(10));
g.drawLine(0, 0, w, h);
g.drawLine(w, 0, 0, h);
g.dispose();
return image;
}
public static void main(String[] args) {
JFrame frame = new AlphaCompositeSrcDemo();
frame.setBounds(0, 0, 200, 250);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}