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