2009-10-03 2 views
0

Étant donné un objet applet, est-il possible d'obtenir par programme une "capture d'écran" de la fenêtre de l'applet (représentée par une image buffered)?Obtention d'une capture d'écran d'une applet?

JApplet applet = this; 
// ... code here ... 
BufferedImage screenshotOfApplet = ...; 

Répondre

1

Vous pouvez utiliser Robot.createScreenCapture(Rectangle bounds) - cependant, l'applet devrait être signé pour permettre que cela fonctionne une fois déployé.

Après commentaires -

Si vous voulez juste le composant applet -

Vous pouvez créer un BufferedImage et de la peinture à lui - quelque chose comme ceci:

public static BufferedImage imageFor(Component component) { 
    BufferedImage image = new BufferedImage(component.getWidth(), 
      component.getHeight(), BufferedImage.TYPE_INT_RGB); 
    Graphics g = image.getGraphics(); 
    component.paint(g); 
    return image; 
} 

Je ne sais pas si cela exigerait que l'applet soit signée ou non ...

+0

createScreenCapture (..) me donne l'écran entier, y compris la fenêtre du navigateur, etc. "fenêtre d'applet" seulement. – knorv

2

Au moins si vous n'utilisez que des composants Swing, je suppose qu'il serait possible de créer un BufferedIma ge de la même taille que l'applet et appelez la méthode paint de l'applet avec l'objet Graphics que vous pouvez obtenir à partir de BufferedImage # getGraphics(). Je n'ai pas de code modèle ici pour tester si cela fonctionne réellement, mais je suppose que ça vaut le coup d'essayer.

0

Screen Image. Je dois admettre que je ne l'ai jamais essayé sur un JApplet auparavant, mais cela fonctionne très bien sur JFrames et JDialogs.

-1

Je pense que vous voulez java.awt.image.PixelGrabber. (IIRC, qui était derrière le ralentissement massif est la performance graphique de Java de 1.1 à 1.2, bien que je puisse me tromper.)