Transparent zeichnen mit drawImage in paintComponent Methode

Hag2bard

Bekanntes Mitglied
Hallo,

Ich habe einen MapEditor programmiert und möchte diesen nun um einen 2. Layer erweitern.
Wenn ich den Layer 2 ausgewählt habe, möchte ich, dass die Sachen, die ich auf dem 1. Layer gezeichnet habe nur blass bzw. transparent zu sehen sind.

Meine paintComponent Methode mit einem Layer:

Java:
   @Override
     protected void paintComponent(Graphics g) {
         super.paintComponent(g);
         graphics2D = (Graphics2D) g;
         for (int i = 0; i < map1.size(); i++) {
             g.drawImage(tilesetBufferedImage, map1.get(i).getDestinationX() * TILESIZE * ZOOM, map1.get(i).getDestinationY() * TILESIZE * ZOOM, (map1.get(i).getDestinationX() + 1) * TILESIZE * ZOOM, (map1.get(i).getDestinationY() + 1) * TILESIZE * ZOOM, map1.get(i).getSourceX() * TILESIZE, map1.get(i).getSourceY() * TILESIZE, (map1.get(i).getSourceX() + 1) * TILESIZE, (map1.get(i).getSourceY() + 1) * TILESIZE, null);
         }
     }

Wie kann ich die drawImage Methode so nutzen, dass Sachen blass gezeichnet werden, oder zumindest erkennbar ist, dass der Layer 1 der immer noch gezeichnet wird dennoch nicht aktiv ist?
 
Wenn ich mich richtig erinnere:
Java:
float alpha = 0.1f;
AlphaComposite alcom = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha);
g2d.setComposite(alcom);
g2d...
Ob das auch mit drawImage gut funktioniert musst du mal ausprobieren.
 
Also im Grunde genommen möchte ich so was hier, ich war mir selbst nicht sicher, wie ich einen deaktivieren Layer darstellen soll. Würde diese Methode so etwas bewirken?(natürlich für das gesamte Bild) nennt sich Fade out gimp-asin-shaded.jpg
 
Vielen Dank für die Antwort, genau so hab ich mir das vorgestellt

Java:
         float alpha = 0.5f;
         AlphaComposite alcom = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha);
         Graphics2D g2d = (Graphics2D) g;
         g2d.setComposite(alcom);
g.drawImage.........
 

Zurück
Oben