为什么我的图像不能保存

时间:2017-05-14 17:38:02

标签: java swing graphics jframe jpanel

我有一个带有JFrame和Jpanel的简单程序,我想在JPanel上画一条线并将图形的结果保存到图像中。但它完全不起作用。

我哪里错了?

Properties

1 个答案:

答案 0 :(得分:1)

不要使用getGraphics()。这不是你如何做自定义绘画。

相反,您需要覆盖JPanel的paintComponent()方法,并在该方法中进行自定义绘制。阅读Custom Painting上Swing教程中的部分,了解更多信息和工作示例。

BufferedImage image = (BufferedImage)mainPanel.createImage(300, 300);

所有这一切都是创建一个空的BufferedImage。

您需要使用Graphics对象在BufferedImage上绘制一些东西。基本代码类似于:

BufferedImage image = new BufferedImage(theWidth, theHheight, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = image.createGraphics();
someComponent.print( g2d );
g2d.dispose();

但是,上述逻辑仅在可见GUI上完成时才有效。这意味着您需要创建框架并将面板添加到框架中。然后,您将创建一个“保存图像”按钮以添加到框架。然后向该按钮添加一个ActionListener。在侦听器代码中,您将创建BufferedImage并将图像保存到文件中。

或者,如果您只是想创建一个图像并将其保存到文件中,那么您只需直接绘制到BufferedImage:

BufferedImage image = new BufferedImage(theWidth, theHheight, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = image.createGraphics();
g2d.setColor( Color.WHITE );
g2d.fillRect(0, 0, theWidth, theHeight);
g2d.setColor( Color.Black );
g2d.drawLine(...);
g2d.dispose();
相关问题