Решение ScreenShot снимает скриншот с моего рабочего стола - PullRequest
1 голос
/ 20 января 2012

Сейчас я делаю полноэкранную игру и хочу сделать несколько скриншотов.Я нашел этот небольшой фрагмент кода:

BufferedImage image = 
new Robot().createScreenCapture(new Rectangle(w.getX(), w.getY(),w.getWidth(),w.getHeight()));

ImageIO.write(image, "jpg", new File("C:\\Users\\Kaizer\\Desktop\\", "ScreenShot"             + counter + ".jpg"));

Я знаю, что он выглядит не очень красиво, но он делает скриншот, но с моего рабочего стола, а не из моей настоящей полноэкранной игры.Скриншоты Windows делают то же самое.

Я знаю, что что-то упустил из виду, но я не могу понять это ради своей жизни.

Кстати: этот код запускается, когдаигрок нажимает кнопку F11.Это не собственный метод.

Ответы [ 2 ]

1 голос
/ 20 января 2012

Если вы написали свою игру с помощью Swing или AWT, вместо использования Robot, вы можете сделать следующее:

private static void captureImage(Component c, String fileName)
        throws IOException {
    BufferedImage img = new BufferedImage(c.getWidth(), c.getHeight(),
            BufferedImage.TYPE_INT_RGB);
    c.paint(img.getGraphics());

    ImageIO.write(img, "jpg", new File(fileName + ".jpg"));
}

Примечание. В зависимости от используемого Component, оно можетили, возможно, не нужно быть видимым.Но, видя, как вы делаете снимок из игры, я почти уверен, что это не имеет значения.

0 голосов
/ 20 января 2012

с моего рабочего стола, а не моей настоящей полноэкранной игры ..

Это типично для Robot (или стандартного программного обеспечения для скриншотов ОС), когда игра выполняет активный рендеринг. AFAIU, с этим ничего не поделаешь (дальше - снимай скриншоты с помощью камеры телефона).

...