Couleur tranparente d'une image
Bonjour,
je voudrais afficher une image constituant le fond d'une JWindow.
Cette image est de type PNG avec le noir comme couleur transparente.
J'ai lu dans plusieurs posts que JAVA gère automatiquement la couleur transparente lorsqu'il s'agit d'image au format PNG.
Ben, dans mon cas, cela ne fonctionne pas :cry:
Voici quelques morceaux du code utilisé pour charger l'image depuis les ressources:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| try
{
imageLogo = ImageIO.read( getClass().getResource( "Plaque translucide 800x600.png" ));
largeur = imageLogo.getWidth();
hauteur = imageLogo.getHeight();
this.setSize( new Dimension( largeur, hauteur ));
this.setLocationRelativeTo( null );
}
catch ( IOException ioE )
{
ioE.printStackTrace();
} |
Voici la partie du code qui affiche le logo après avoir fait une capture de l'écran se situant sous la zone d'affichage:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| public void afficheLogo()
{
BufferedImage imageCapture;
Graphics2D g2D;
Robot Automate;
try
{
Automate = new Robot( getGraphicsConfiguration().getDevice() );
imageCapture = Automate.createScreenCapture( getBounds() );
imageTravail = null; // Au cas où cela se passe mal, il n'y aura rien à afficher
imageTravail = new BufferedImage( largeur, hauteur, BufferedImage.TYPE_INT_ARGB );
g2D = (Graphics2D)imageTravail.getGraphics();
g2D.drawImage( imageCapture, null, 0, 0 );
g2D.drawImage( imageLogo, 0, 0, null );
this.setVisible( true );
}
catch ( AWTException awtE )
{
System.out.println( awtE.getMessage() );
}
} |
Et bien sûr l'affichage de la fenêtre JWindow:
Code:
1 2 3 4 5 6
| public void paint ( Graphics G )
{
if ( imageTravail != null )
G.drawImage( imageTravail, 0, 0, null );
} |
Voila, ce code affiche la plaque rectangulaire du logo, avec la partie "noire" qui devrait en fait laisser passer les pixels de la capture écran. Où est le problème ?
Merci et à bientôt...