web-dev-qa-db-fra.com

Comment faire un rectangle dans Graphics d'une couleur transparente?

J'essaie de peindre un rectangle sur mon application dans une teinte rouge, mais je dois le rendre transparent pour que le composant en dessous s'affiche toujours. Cependant, je veux toujours que certaines couleurs apparaissent toujours. La méthode où je dessine est la suivante:

protected void paintComponent(Graphics g) {
    if (point != null) {
        int value = this.chooseColour(); // used to return how bright the red is needed

        if(value !=0){
            Color myColour = new Color(255, value,value );
            g.setColor(myColour);
            g.fillRect(point.x, point.y, this.width, this.height);
        }
        else{
            Color myColour = new Color(value, 0,0 );
            g.setColor(myColour);
            g.fillRect(point.x, point.y, this.width, this.height);
        }
    }
}

Est-ce que quelqu'un sait comment je peux rendre la teinte rouge un peu transparente? Mais je n'en ai pas besoin complètement transparent.

21
ict1991
int alpha = 127; // 50% transparent
Color myColour = new Color(255, value, value, alpha);

Voir les constructeurs Color qui prennent 4 arguments (soit int ou float) pour plus de détails.

41
Andrew Thompson

Essaye ça:

protected void paintComponent(Graphics g) {
    if (point != null) {
        int value = this.chooseColour(); // used to return how bright the red is needed
        g.setComposite(AlphaComposite.SrcOver.derive(0.8f));

        if(value !=0){
            Color myColour = new Color(255, value,value );
            g.setColor(myColour);
            g.fillRect(point.x, point.y, this.width, this.height);
        }
        else{
            Color myColour = new Color(value, 0,0 );
            g.setColor(myColour);
            g.fillRect(point.x, point.y, this.width, this.height);
        }
        g.setComposite(AlphaComposite.SrcOver);

    }
}
2
ecle