2011-11-13 7 views
19

Próbuję namalować prostokąt na mojej aplikacji w czerwonym odcieniu, ale muszę go uczynić przezroczystym, aby komponent pod nim nadal był wyświetlany. Jednak nadal chcę, aby jakiś kolor nadal się wyświetlał. Metoda rysowania jest następująca:Jak zrobić prostokąt w grafice w przezroczystym kolorze?

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

Czy ktoś wie, jak sprawić, by czerwony odcień był nieco przezroczysty? Nie potrzebuję tego jednak całkowicie przezroczystego.

Odpowiedz

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

Zobacz Color constructors że przyjmować 4 argumenty (int lub float) dla dalszych szczegółów.

1

Spróbuj tego:

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

    } 
} 
Powiązane problemy