Как я могу нарисовать изображение из BufferStrategy в Png файл? - PullRequest
0 голосов
/ 29 января 2019

Я создал программу на 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 ]

0 голосов
/ 29 января 2019

Общий знаменатель между 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, чтобы записать образ на диск.Подробнее см. Запись / сохранение изображения

0 голосов
/ 29 января 2019

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

...