Domanda

ho creato un ARGB BufferedImage. Ora mi piacerebbe reinizializzare con uno sfondo trasparente. Ho provato il seguente codice:

(...) 
if( this.offscreen==null  ||
    this.offscreen.getWidth()!= dim.width ||
    this.offscreen.getHeight()!= dim.height )
    {
    this.offscreen=new BufferedImage(
       dim.width,
       dim.height,
      BufferedImage.TYPE_INT_ARGB);
     }
Graphics2D g=this.offscreen.createGraphics();
g.setColor(new Color(255,255,255,0));
g.clearRect(0, 0, dim.width, dim.height);
(...)

, ma non ha funzionato.

Qualche idea su come fare questo favore?

Grazie!

È stato utile?

Soluzione

g.clearRect(..) riempie il rettangolo selezionato con il colore dell'oggetto Graphics2D sfondo. È meglio fare g.fillRect(..) che darebbe il risultato desiderato con il codice, o impostare il colore dell'oggetto Graphics2D anticipo (g.setBackground(..)).

sfondo

Inoltre, si può avere a che fare g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC)); prima del riempimento in modo che esso imposta il buffer correttamente (ignorare i dati buffer di destinazione, utilizzare solo dati di origine - in questo caso, l'operazione di riempimento). Non sono sicuro che il valore predefinito è per questo valore, ma si dovrebbe impostare di nuovo a che poi a garantire un corretto funzionamento.

Altri suggerimenti

Ho avuto questo problema prima e ho risolto con un trucco davvero stretta. Qui è l'affare:

Nel costruttore della vernice Classe prendere uno screenshot del sistema ma attenzione

BufferedImage image = new Robot().createScreenCapture(new Rectangle(0, 23, xScreen, yScreen));

E in cui si desidera cancellare lo schermo

g2D.drawImage(image, null, /*your Image observer*/);                    
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top