MrSchmidtdt: clearRect bzw. fillRect mit WIRKLICH transparenter Farbe füllen?

Beitrag lesen

Hallo,

ich habe ein BufferedImage, welches zwecks einer Animation immer wieder gemalt wird und den Schein einer Rotation erweckt.

Dummerweise kann ich die bereits gemalten Bilder nicht so entfernen bzw. übermalen, wie ich es gerne hätte.

graphics.fillRect(...) malt alles im Hintergrund einfach immer nur schwarz.
Bild1
Lasse ich es weg, verschmiert meine Transparente "Animation" nach wenigen Sekunden ineinander und schaut in etwa so aus:
Bild2

Ich benutze follgenden Code:

  
  
  
import javax.swing.*;  
import java.awt.*;  
import java.awt.event.*;  
import java.awt.geom.AffineTransform;  
import java.awt.image.BufferedImage;  
public class RotAnimComp extends JComponent implements ActionListener  
{  
	private Image image;  
	private Timer timer;  
	private BufferedImage tempImage;  
	private int step;  
	public RotAnimComp (Image image, int sleepTime)  
	{  
		this.image = image;  
		tempImage = new BufferedImage (866,866,BufferedImage.TYPE_INT_ARGB_PRE);  
		setPreferredSize (new Dimension (866,866));  
		timer = new Timer (sleepTime,this);  
		step = 0;  
	}  
	public void paintComponent (Graphics g)  
	{  
		final int width = 866;  
		final int height = 866;  
		Graphics2D graphics = tempImage.createGraphics();  
		// graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);  
		final double angle = Math.toRadians((double)step);  
		AffineTransform trans = AffineTransform.getRotateInstance(angle,width >> 1, height >> 1);  
		  
       // graphics.setComposite(AlphaComposite.Src);  
        graphics.clearRect(0, 0, width, height);  
  
		graphics.drawImage(image, trans, null);  
		g.drawImage(tempImage,0,0,null);  
	}  
	public void actionPerformed (ActionEvent e)  
	{  
		paint (getGraphics());  
		++step;  
		if (step > 359) step = 0;  
	}  
	public void startAnimation ()  
	{  
		timer.start();  
	}  
}