Bilder transparent zeichnen lassen

taouri

Mitglied
Hi,

also ich wollte versuchen ein Bild transparent zeichnen zu lassen. Ich wollte dafür erst mal einen RGBImageFilter nehmen. Bloß will der nicht so recht funktionieren. Ich habe vergebliche nach einfacheren Möglichkeiten gesucht. Hat jemand ne Idee?

Gruß

taouri
 
Ok, hab's herausgefunden:

Man muss das ganze mit der 2D-API und AlphaComposite machen, dann gehts. Das sieht dann folgendermaßen aus (falls es mal jemand brauchen sollte):

Code:
//Eine Klasse die JPanel überschreibt

@Override
public void paintComponent(Graphics g)
{
  Graphics2D g2d = (Graphics2D) g;
  g2d.setComposite(AlphaComposite. getInstance(AlphaComposite.SRC_OVER, 0.75f));

  g2d.drawImage(new ImageIcon("Bildpfad").getImage(),0,0,getWidth(),getHeight());
}

Im setCompositeaufruf wird zuerst du Regel (in diesem Fall SRC_OVER) und dann als Float der Alpha-Wert bestimmt. Danach wird das Bild mit der gewünschten Transparenz gezeichnet.

Will man hinterher wieder normal zeichnen, könnte man das folgende Konstrukt benutzen:

Code:
//Altes Composite abspeichern
Composite old = g2d.getComposite();

//Neues Composite setzen
g2d.setComposite(...);

//Composite zurücksetzen
g2d.setComposite(old);

hth


Gruß

taouri
 
Zurück