0

我有一个在 JPanel 上绘制图像的应用程序。我想完全处理 GUI,以便仅从代码调用应用程序,没有用户界面,并且仅将图像保存到 gif 文件中。

我已经尝试过这个问题的代码,当我从旧 GUI 中调用保存 gif 代码时,它似乎工作正常。但是,当我删除 GUI 时,保存 gif 代码似乎不起作用,我想知道这是否可能是因为它试图打印的 JPanel 实际上并没有进入像 JFrame 等 GUI 容器中。

我不发布代码的原因是它太冗长了,我只是要求一个简单的样板答案。

我已经为其他应用程序尝试了可写栅格。但这将需要为此应用程序进行主要的重新编码项目,该项目使用 graphics.drawLine() 方法进行绘制。谁能建议一种代码有效的方法来获取“幻像”JPanel 的内容,将其放入 BufferedImage,然后将其保存为 gif,而无需将 JPanel 放入 GUI 中?

4

2 回答 2

1

由于您的应用程序使用 a JPanelthen 它只需要一个Graphics对象。您可以使用其中的一个BufferedImage,然后将其保存到文件中。示例代码:

BufferedImage image = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);

Graphics g = image.getGraphics();

// Pass this graphics object to your application to perform the drawing         
g.setColor(Color.red);
g.drawRoundRect(10, 10, 20, 20, 5, 5);

// save it to disk
ImageIO.write(image, "png", new File("test.png"));
于 2013-08-01T19:29:07.630 回答
0

但是,如果没有任何示例代码,这很难回答。

如果您尝试渲染的组件没有显示在屏幕上,则很可能它没有被布局。

在绘画之前,您应该确保调整组件的大小。

componentToBePainted.setSize(componentToBePainted.getPreferredSize());

您还应该使用printprintAll超过paint. 未附加到本机对等方时,paint可能会导致问题

于 2013-08-01T19:59:26.747 回答