我有一个带有JFrame和Jpanel的简单程序,我想在JPanel上画一条线并将图形的结果保存到图像中。但它完全不起作用。
我哪里错了?
Properties
答案 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();