Ответ 1
int alpha = 127; // 50% transparent
Color myColour = new Color(255, value, value, alpha);
Смотрите конструкторы Color
, которые принимают 4 аргумента (int
или float
) для более подробной информации.
Я пытаюсь рисовать прямоугольник в своем приложении в красном цвете, но мне нужно сделать его прозрачным, чтобы компонент под ним все равно отображался. Однако я все еще хочу, чтобы какой-то цвет все еще показывался. Метод, который я рисую, следующий:
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);
}
}
}
Кто-нибудь знает, как я могу сделать красный оттенок немного прозрачным? Я не нуждаюсь в этом полностью прозрачным, хотя.
int alpha = 127; // 50% transparent
Color myColour = new Color(255, value, value, alpha);
Смотрите конструкторы Color
, которые принимают 4 аргумента (int
или float
) для более подробной информации.
Попробуйте следующее:
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);
}
}