我是 stackoverflow 的新发帖者,但我一直在阅读这些帖子以获得灵感,我很高兴成为社区的一员。
我正在将图像绘制到 JPanel,然后我希望将该图像保存到文件中。JPanel 上的绘画很好,但是当我查看图像时,它不是全白就是全黑。我不知道为什么图像没有保存它在 JPanel 上的外观。我想在将图像绘制到缓冲区并保存时,我可能没有正确引用面板?它几乎就像 bufferedImage 是空白的。我对awt没有太多经验,所以我觉得我犯了一个非常愚蠢的错误。
我只覆盖paintComponent() 方法一次,并在其中进行绘图(它完美地显示在JPanel 上),然后在它的底部调用saveImage() 方法,该方法应该将图像保存到文件中. 但正如我之前提到的,它总是一个空白图像。我在构造函数中使用 repaint() 方法。
我不会用整个代码来阻止这篇文章。它是一个非常简单的代码,相关部分如下。
class drawingBarcode extends JPanel
public drawingBarcode(){
repaint();
try{
Thread.sleep(999);
}catch(InterruptedException e){
e.printStackTrace();
}
public void saveImage() {
BufferedImage bi = new BufferedImage(350, 150, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = bi.createGraphics();//creates and returns a graphics 2d for drawing into buffer
// g2.setColor(color1);
super.paintComponent(g2);
g2.dispose();
try
{
ImageIO.write(bi, "jpg", new File("test.jpg\\"));
}
catch(IOException ioe)
{
System.out.println("Something went wrong");
ioe.printStackTrace();
}
public void paintComponent(Graphics g){
Graphics2D g2D = (Graphics2D) g;
super.paintComponent(g2D);
setStrokeWithPen1(g2D);
drawAsterix(g2D);//draw asterix(start digit) always
/* some drawing takes place here using g2D. */
g2D.dispose();
saveImage();
}
}
任何可以提供的帮助或建议将不胜感激!