Получение снимка экрана апплета? - PullRequest
0 голосов
/ 04 октября 2009

Учитывая объект Апплета, возможно ли программно получить "снимок экрана" окна апплета (представленный как скажем BufferedImage)?

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

Ответы [ 4 ]

2 голосов
/ 04 октября 2009

По крайней мере, если вы используете только компоненты Swing, я полагаю, что было бы возможно создать BufferedImage того же размера, что и апплет, и вызвать метод рисования апплета с объектом Graphics, который вы можете получить из BufferedImage # getGraphics () , У меня нет здесь шаблона кода, чтобы проверить, работает ли он на самом деле, но я думаю, стоит попробовать.

1 голос
/ 04 октября 2009

Вы можете использовать Robot.createScreenCapture(Rectangle bounds) - однако апплет должен быть подписан, чтобы это работало после развертывания.

После комментариев -

Если вам нужен только компонент апплета -

Вы можете создать BufferedImage и нарисовать его - что-то вроде этого:

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

Я не уверен, что для этого потребуется подписать апплет или нет ...

0 голосов
/ 04 октября 2009

Я думаю, что вы хотите java.awt.image.PixelGrabber. (IIRC, что было причиной огромного замедления, - производительность графики Java с 1.1 до 1.2, хотя я могу ошибаться.)

0 голосов
/ 04 октября 2009

Изображение на экране . Должен признать, что я никогда не пробовал его на JApplet раньше, но он отлично работает на JFrames и JDialogs.

...