Dibujar imágenes transparentes en Java Graphics2D

Quiero dibujar una imagen PARCIALMENTE transparente encima de otra (Hacer sombras sobre las cosas). Actualmente estoy usando la clase Graphics2D de java para renderizar, me han dicho que configure el compuesto en AlphaComposite, pero eso solo lo establece completamente transparente.

¿Puedo hacer esto con mi configuración actual? ¿Qué tengo que hacer para arreglar esto?

Este es el código que me dijeron que lo haría parcialmente transparente:

    AlphaComposite ac = java.awt.AlphaComposite.getInstance(AlphaComposite.CLEAR, 0.5F);
    g.setComposite(ac);

(Estoy usando imágenes png por cierto)

Heres su sscce (todos están en diferentes clases pero los puse juntos por simplicidad) (uso una imagen llamada "Prueba" en la carpeta local "Imágenes", puede usar lo que sea para esto siempre que sea una imagen png llamada lo mismo

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);
        }







}

Si ejecuta esto, tendrá que alt + tabular y finalizar el proceso (ya que no tiene nada en esta parte del código para hacerlo)

Respuesta 1

Cell cell = row.createCell (1); cell.setCellValue (rdf.getEffectiveDate ()); cell.getCellStyle (). setDataFormat (HSSFDataFormat.getBuiltinFormat ("d-mmm-aa")); celda = row.createCell (2); ...

Estoy buscando una forma de tomar expresiones de reemplazo de sed, como s / hello / world / (es decir, reemplazar todas las instancias de 'hello' con 'world') y aplicarlas a una cadena de Java. Idealmente me gustaría ...

Acabo de instalar el complemento ecobertura, pero parece que no es una herramienta muy fácil de usar desde dentro de eclipse. ¿hay algún buen complemento para cobertura en eclipse o un artículo para describir cómo usar ecobertura? ...

Quiero generar una cadena JSON en la siguiente estructura usando Jackson API (JsonFactory, JsonGenerator). Cómo puedo hacerlo ? Esperado: {"api": {"Salutaion": "Mr", "name": "X" ...