Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ajuster une image dans un JPanel

1 réponse
Avatar
Jean-Marie
Bonjour

j'ai récupéré un code qui permet d'afficher une image centrée ou en
mosaïque dans un JPanel ; en fait je voudrais plutôt étirer l'image
aux dimensions du JPanel ; çà doit être tout bête mais je n'y parviens
pas

merci pour votre aide

Jean-Marie

ci-dessous le code que l'on trouve dans la FAQ :

public class JPanelImageBg extends JPanel
{
private int mode;
private TexturePaint texture;
private BufferedImage bufferedImage;

public static final int CENTRE = 0;
public static final int TEXTURE = 1;

public JPanelImageBg( String fileName, int mode )
{
super();
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));

this.mode = mode;
this.bufferedImage =
this.toBufferedImage(Toolkit.getDefaultToolkit().getImage(fileName));
this.texture = new TexturePaint(bufferedImage,new Rectangle(0, 0,
bufferedImage.getWidth(), bufferedImage.getHeight()));
}

public void paintComponent(Graphics g)
{
super.paintComponent(g);
switch( mode )
{ case TEXTURE :
Graphics2D g2d = (Graphics2D)g;
g2d.setPaint(texture);
g2d.fillRect(0, 0, getWidth(), getHeight() );
break;
case CENTRE :
g.setColor(this.getBackground());
g.fillRect(0,0,getWidth(), getHeight() );

g.drawImage(bufferedImage,(getWidth()-bufferedImage.getWidth())/2,(getHeight()-bufferedImage.getHeight())/2,null);
break;
default :
super.paintComponents(g);
}
}
private BufferedImage toBufferedImage(Image image)
{ image = new ImageIcon(image).getImage();

BufferedImage bufferedImage = new BufferedImage( image.getWidth(null),
image.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics g = bufferedImage.createGraphics();

g.setColor(Color.white);
g.fillRect(0, 0, image.getWidth(null),
image.getHeight(null));
g.drawImage(image, 0, 0, null);
g.dispose();
return bufferedImage;
}

}

1 réponse

Avatar
Jean-Marie
ah lire la doc...

drawImage(bufferedImage,jpanel.getX(),jpanel.getY(),jpanel.getWidth(),jpanel.getHeight(),null)

Bonjour

j'ai récupéré un code qui permet d'afficher une image centrée ou en
mosaïque dans un JPanel ; en fait je voudrais plutôt étirer l'image
aux dimensions du JPanel ; çà doit être tout bête mais je n'y parviens
pas

merci pour votre aide

Jean-Marie

ci-dessous le code que l'on trouve dans la FAQ :

public class JPanelImageBg extends JPanel
{
private int mode;
private TexturePaint texture;
private BufferedImage bufferedImage;

public static final int CENTRE = 0;
public static final int TEXTURE = 1;

public JPanelImageBg( String fileName, int mode )
{
super();
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));

this.mode = mode;
this.bufferedImage =
this.toBufferedImage(Toolkit.getDefaultToolkit().getImage(fileName));
this.texture = new TexturePaint(bufferedImage,new Rectangle(0,
0, bufferedImage.getWidth(), bufferedImage.getHeight()));
}

public void paintComponent(Graphics g)
{
super.paintComponent(g);
switch( mode )
{ case TEXTURE :
Graphics2D g2d = (Graphics2D)g;
g2d.setPaint(texture);
g2d.fillRect(0, 0, getWidth(), getHeight() );
break;
case CENTRE :
g.setColor(this.getBackground());
g.fillRect(0,0,getWidth(), getHeight() );

g.drawImage(bufferedImage,(getWidth()-bufferedImage.getWidth())/2,(getHeight()-bufferedImage.getHeight())/2,null);

break;
default :
super.paintComponents(g);
}
}
private BufferedImage toBufferedImage(Image image)
{ image = new ImageIcon(image).getImage();

BufferedImage bufferedImage = new BufferedImage(
image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics g = bufferedImage.createGraphics();

g.setColor(Color.white);
g.fillRect(0, 0, image.getWidth(null),
image.getHeight(null));
g.drawImage(image, 0, 0, null);
g.dispose();
return bufferedImage;
}

}