Domanda

Dato un oggetto Applet, è possibile ottenere un programatically "schermata" della finestra dell'applet (rappresentato come dire una BufferedImage)?

 JApplet applet = this;
 // ... code here ...
 BufferedImage screenshotOfApplet = ...;
È stato utile?

Soluzione

Si potrebbe utilizzare Robot.createScreenCapture(Rectangle bounds) - tuttavia, l'applet dovrebbe essere firmato per permettere questo al lavoro una volta distribuito

.

Dopo i commenti -

Se si desidera solo il componente di applet -

È possibile creare un BufferedImage e dipingere ad esso - qualcosa di simile a questo:

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;
}

Non sono sicuro se questo richiederebbe l'applet da firmare o no ...

Altri suggerimenti

Almeno se si sta utilizzando solo componenti Swing, suppongo che sarebbe stato possibile creare una BufferedImage della stessa dimensione come l'applet e chiamare il metodo paint dell'applet con l'oggetto Graphics che si può ottenere da BufferedImage # getGraphics () . Non ho alcun codice del modello qui per verificare se funziona davvero, ma credo che la pena di provare.

schermo Immagine . Devo ammettere che non ho mai provato su un JApplet prima, ma funziona bene su JFrames e JDialogs.

Penso che si desidera java.awt.image.PixelGrabber. (IIRC, che era dietro il rallentamento massiccia è Java prestazioni grafiche 1,1-1,2, anche se potrei sbagliarmi.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top