ScreenShot d'un panel et l'afficher dans un autre

medhidu02 Messages postés 16 Date d'inscription samedi 14 septembre 2013 Statut Membre Dernière intervention 17 janvier 2015 - 11 janv. 2015 à 11:12
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 12 janv. 2015 à 11:01
Bonjour à tous,
J'ai un petit problème, je suis parvenue à réaliser un screenshot d'un panel, je l'ai ensuite affiché dans un panel différent et plus petit mais malheureusement, impossible de redimensionner le screenshot ce qui fait que je n'ai qu'une partie de celui-ci afficher. Une idée s'il vous plait ?
(J'ai cherché sur plusieurs forums et je n'ai pas trouvé de réponse)

voici mon code :
BufferedImage capture = new BufferedImage(getSize().width - 140, getSize().height, BufferedImage.TYPE_INT_RGB);
panel1.paint(capture.getGraphics());
panel2.add(new JLabel(new ImageIcon(capture)));
panel2.revalidate();

et voici ce que ça donne :

2 réponses

micheldelacroix Messages postés 6 Date d'inscription vendredi 2 janvier 2015 Statut Membre Dernière intervention 13 janvier 2015
12 janv. 2015 à 09:30
Bonjour,
Ton code à l'air correct pourtant :/ . Attendons les autres utilisateurs pour avoir d'autres avis.
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
12 janv. 2015 à 11:01
Salut,

Ci-dessous un exemple de capture avec resize de l'image:
import java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class ScreenShot extends JFrame implements ActionListener {
  private JLabel            canvas           = null;

  public ScreenShot() {
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setSize(800, 600);
    setLocationRelativeTo(null);

    /* panel principale */
    final JPanel content = (JPanel) getContentPane();
    content.setLayout(new BorderLayout(5, 5));
    /* bouton pour faire la capture */
    final JButton shot = new JButton("Screenshot");
    shot.addActionListener(this);
    content.add(shot, BorderLayout.NORTH);

    /* label qui affiche la capture */
    canvas = new JLabel();
    canvas.setBorder(BorderFactory.createLineBorder(Color.BLACK));
    content.add(canvas, BorderLayout.CENTER);
  }

  public static void main(final String[] args) {
    new ScreenShot().setVisible(true);
  }

  @Override
  public void actionPerformed(final ActionEvent e) {
    try {
      /* creation d'une capture d'ecran */
      final Robot rb = new Robot();
      final BufferedImage image = rb.createScreenCapture(new Rectangle(Toolkit
          .getDefaultToolkit().getScreenSize()));
      /* resize de l'image a la taille du label */
      final BufferedImage rsize = resize(image, canvas);
      /* affichage de l'image */
      canvas.setIcon(new ImageIcon(rsize));
    } catch (final AWTException e1) {
      e1.printStackTrace();
    }
  }

  public BufferedImage resize(final BufferedImage source, final Component comp) {
    return resize(source, comp.getSize());
  }

  public BufferedImage resize(final BufferedImage source, final Dimension size) {
    // creation d'une image pour preparer le redimensionnement
    final BufferedImage bimage = new BufferedImage(size.width, size.height,
        BufferedImage.TYPE_INT_ARGB);
    final Graphics2D g = (Graphics2D) bimage.getGraphics();
    // on ajoute un rendu a l'image
    g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
        RenderingHints.VALUE_INTERPOLATION_BICUBIC);
    g.setRenderingHint(RenderingHints.KEY_DITHERING,
        RenderingHints.VALUE_DITHER_ENABLE);
    /* resize de l'image */
    g.drawImage(source, 0, 0, size.width, size.height, null);
    g.dispose();
    return bimage;
  }
}


0
Rejoignez-nous