gpt4 book ai didi

java - 在JPanel上绘制,然后保存到文件,但保存的文件全是白色

转载 作者:行者123 更新时间:2023-12-01 15:27:10 29 4
gpt4 key购买 nike

我是 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();
}
}

任何可以提供的帮助或建议将不胜感激!

最佳答案

您的保存图像例程调用 super.paintComponent,在绘制图像图形时丢失了所有自定义绘制代码!我会重构你的代码 - 你不希望每次 UI 绘制时都保存文件吗?

关于java - 在JPanel上绘制,然后保存到文件,但保存的文件全是白色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10020214/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com