Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Swing] screenshot d'un composant qu'on ne voit...

    19 octobre 2017 à 16:38:54

    Bonjour, 

    Je cherche un moyen de capturer un composant qu'on ne voit pas en entier sur la fenêtre. 
    C'est à dire qu'on a par exemple un JPanel qui est très long, et que pour le parcourir dans l'interface on a besoin d'utiliser une scrollbar. 

    J'ai essayé plusieurs méthodes comme celle ci : 

    Rectangle rect = component.getBounds();
    	 
    	    try {
    	        String format = "png";
    	        String fileName = component.getName() + "." + format;
    	        BufferedImage captureImage =
    	                new BufferedImage(rect.width, rect.height,
    	                                    BufferedImage.TYPE_INT_ARGB);
    	        component.paint(captureImage.getGraphics());
    	 
    	        ImageIO.write(captureImage, format, new File(fileName));
    	 
    	        System.out.printf("The screenshot of %s was saved!", component.getName());
    	    } catch (IOException ex) {
    	        System.err.println(ex);
    	    }

    Ou encore celle ci qui utilise la classe ScreenImage 

    BufferedImage bi;
    		try {
    			bi = ScreenImage.createImage( component  );
    			ScreenImage.writeImage(bi, "Screen-Image.jpg");
    		} catch (AWTException | IOException e) {
    			e.printStackTrace();
    		}

    Mais dans les 2 cas, lorsque j'appelle ces méthodes, l'image générée ne prend en compte que ce que je vois dans ma fenêtre. C'est à dire que si je me trouve en bas lorsque j'effectue la capture, il manque le haut dans l'image générée (la partie que je verrais si je scrollais vers le haut)...

    Je ne sais pas si mon explication est assez claire donc n'hésitez pas à me dire si quelqu'un chose est incompréhensible :)


    -
    Edité par kingairsoft 19 octobre 2017 à 16:40:39

    • Partager sur Facebook
    • Partager sur Twitter

    [Swing] screenshot d'un composant qu'on ne voit...

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown