title: Drawing Transparent Images In Java Graphics2D
body: <p>I want to draw a PARTIALLY transparent image on top of another (Making shadows over things). I am currently using java's Graphics2D class to render, I've been told to set the composite to AlphaComposite, but that only sets it completely transparent.</p>
  
  <p>Can I do this with my current setup? What do I have to do to fix this?</p>
  
  <p>This is the code I was told that would make it partially transparent:</p>
  
  <pre><code>    AlphaComposite ac = java.awt.AlphaComposite.getInstance(AlphaComposite.CLEAR, 0.5F);
      g.setComposite(ac);
  </code></pre>
  
  <p>(I am using png images by the way)</p>
  
  <p>Heres your sscce (these are all in different classes but i put them together for simplicity) (I use an image called "Test" in the local folder "Images", you can use whatever for this as long as it is a png Image named the same</p>
  
  <pre><code>import java.awt.AlphaComposite;
  import java.awt.Color;
  import java.awt.DisplayMode;
  import java.awt.Font;
  import java.awt.Graphics2D;
  import java.awt.Window;
  
  import javax.swing.ImageIcon;
  
  import com.blazingkin.atrox.ScreenManager;
  
  public class AtroxAdventrum{
  
  public static void main(String[] args) {
  new AtroxAdventrum().run();
  }
  
      private static DisplayMode modes[] = {
  
          //new DisplayMode(1080,720,32,0),
          //new DisplayMode(1080,720,24,0),
          //new DisplayMode(1080,720,16,0),
          //new DisplayMode(1440,900,32,0),
          //new DisplayMode(1440,900,24,0),
          //new DisplayMode(1440,900,16,0),
  
      };
      private boolean running = true;
      public ScreenManager s;
  
      public void stop(){
          running = false;
      }
  
      public void run(){
          try{
              init();
              gameLoop();
          }finally{
              s.restoreScreen();
          }
      }
  
      public void init(){
          s = new ScreenManager();
          DisplayMode dm = s.findFirstCompatibleMode(modes);
          s.setFullScreen(dm);
  
  
          Window w = s.getFullScreenWindow();
          w.setFont(new Font("Arial", Font.PLAIN, 20));
          w.setBackground(Color.black);
          w.setForeground(Color.white);
      }
  
      public void gameLoop(){
          long startTime = System.currentTimeMillis();
          long cumTime = startTime;
  
          while (running)
          {
              long timePassed = System.currentTimeMillis() - cumTime;
              cumTime += timePassed;
              if (limitfps){
              try{
                  Thread.sleep(15);
              }catch(Exception e){}
              }
              update(timePassed);
              Graphics2D g = s.getGraphics();
              draw(g);
              g.dispose();
              s.update();
          }
      }
  
      public void update(long timePassed){
      }
  
      public boolean limitfps = false;
  
          public void draw(Graphics2D g){
          g.clearRect(0, 0, s.getWidth(), s.getHeight());
          AlphaComposite ac = java.awt.AlphaComposite.getInstance(AlphaComposite.CLEAR,0.5F);
          g.setComposite(ac);
          g.drawImage(new ImageIcon("Images/Test.png").getImage(), 30, 30, 30, 30, null);
          }
  
  
  
  
  
  
  
  }
  </code></pre>
  
  <p>If you run this you will have to alt + tab out and end the process (as it doesnt have anything in this portion of code to do such)</p>