How to make a rectangle in Graphics in a transparent colour?
-
27-02-2021 - |
Question
I'm trying to paint a rectangle on my application in a red shade but I need to make it sort of transparent so that the component under it will still show. However I still want that some colour will still show. The method where I'm drawing is the following:
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);
}
}
}
Does anyone know how I can make the red shade a bit transparent? I don't need it completely transparent though.
Solution
int alpha = 127; // 50% transparent
Color myColour = new Color(255, value, value, alpha);
See the Color
constructors that take 4 arguments (of either int
or float
) for further details.
OTHER TIPS
Try this: (but it will works for Graphics2D objeccts not for Graphics)
protected void paintComponent(Graphics2D 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);
}
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow