2015-06-28 7 views
1

Я хочу сделать что-то на моей GlassPane. Проблема в том, что если я перемещаю визуализированные линии вокруг, то ранее отображаемые пиксели имеют один и тот же цвет. Я не могу использовать g.clearRect, потому что он не очищает прозрачность.Java GlassPanel прозрачный прозрачный фон

Вот мой код рендеринга:

Graphics2D g2 = (Graphics2D) g; 

    for(LinePath line : lines) 
    { 
     for(int i = 0; i < line.points.length; i+=2) 
     { 
      if(i != 0) 
      { 
       g.drawLine((int)line.points[i-2],(int)line.points[i-1],(int)line.points[i],(int)line.points[i+1]); 
      } 
     } 
    } 


    //Clearing alpha 
    Area area = new Area(); 
    // This is the area that will filled... 
    area.add(new Area(new Rectangle2D.Float(0, 0, getWidth(), getHeight()))); 
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.0f)); 
    g2.fill(area); 

И вот результат: enter image description here

+2

Чтобы лучше помочь, отправьте сообщение [MCVE] (http://stackoverflow.com/help/mcve) (минимальный полный проверяемый пример) или [SSCCE] (http://www.sscce.org/) (Short , Self Contained, Правильный пример). –

ответ

1

clearRect должны работать, но вы должны сбросить альфа-композит, прежде чем использовать его.

Пример:

g2.setComposite (AlphaComposite.getInstance (AlphaComposite.SRC_OVER, 1.0f));

+0

Да, но как я могу сбросить альфа? – bitQUAKE