2011-11-13 48 views
19

मैं अपने आवेदन पर लाल रंग में एक आयताकार पेंट करने की कोशिश कर रहा हूं लेकिन मुझे इसे पारदर्शी बनाने की ज़रूरत है ताकि इसके तहत घटक अभी भी दिखाए जा सके। हालांकि मैं अभी भी चाहता हूं कि कुछ रंग अभी भी दिखाए जाएंगे। जिस विधि को मैं चित्रित कर रहा हूं वह निम्नलिखित है:एक पारदर्शी रंग में ग्राफिक्स में आयताकार कैसे बनाया जाए?

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

क्या कोई जानता है कि मैं लाल छाया को थोड़ा पारदर्शी कैसे बना सकता हूं? हालांकि मुझे इसे पूरी तरह से पारदर्शी की आवश्यकता नहीं है।

उत्तर

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

Color constructors कि अधिक जानकारी के लिए 4 तर्कों (int या float) लेने देखें।

1

इस प्रयास करें:

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

    } 
}