Как нарисовать изображение из BufferStrategy в файл Png?

Я создал Java-программу, которая генерирует снежинки, и я хотел бы сохранить изображение, созданное в виде файла.png, как только программа закончит рисование.

Я искал в Интернете, но я нашел только программы, использующие BufferedImage, в то время как я использую BufferStrategy, поэтому я не знаю точно, с чего начать.

Метод draw в моей программе использует BufferStrategy для создания компонента Graphics. Например, чтобы нарисовать простую линию, метод:

bs = display.getCanvas().getBufferStrategy();
if (bs == null) {
    display.getCanvas().createBufferStrategy(3);
    return;
}

g = bs.getDrawGraphics();
g.clearRect(0, 0, width, height);
g.setColor(Color.BLACK);
g.drawLine(0, 0, 50, 50);

Я хотел бы получить точную копию того, что было нарисовано на экране программой, для сохранения в виде изображения в формате.png. Надеюсь, ты сможешь мне помочь.

2 ответа

Почему бы не сделать снимок экрана и затем вставить его в MS paint или в другое (и лучшее) программное обеспечение для редактирования изображений, такое как Photoshop или Fire Alpaca? Это должно решить вашу проблему.

Общий знаменатель между BufferedStrategy а также BufferedImage является Graphics, поэтому вы хотите написать процедуру рисования, так что вы можете просто передать ссылку на Graphics к этому

public void render(Graphics g) {
    g.clearRect(0, 0, width, height);
    g.setColor(Color.BLACK);
    g.drawLine(0, 0, 50, 50);
}

Тогда вы можете передать любой контекст, который хотите.

BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_RGB);
Graphics2D g2d = img.createGraphics();
render(g2d);
g2d.dispose();

Тогда вы можете использовать ImageIO.write записать образ на диск. См. Запись / сохранение изображения для более подробной информации.

Другие вопросы по тегам