当前位置: 首页 > 知识库问答 >
问题:

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

章安宜
2023-03-14

我是stackoverflow的新海报,但我一直在阅读这些帖子以获得灵感,我很高兴成为社区的一份子。

我正在向JPanel绘制一个图像,然后希望将该图像保存到一个文件中。JPanel上的绘画很好,但当我看到图像时,它要么全白要么全黑。我不知道为什么图像没有保存它在JPanel上的样子。我想可能是我没有正确地引用面板时,将图像绘制到缓冲区和保存它?这几乎就像bufferedImage是空白的。我对awt没有太多的经验,所以我有一种感觉,我正在犯一个非常愚蠢的错误。

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

任何可以提供的帮助或建议将非常感谢!

共有1个答案

周昊乾
2023-03-14

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

 类似资料:
  • 问题 上传文件,并将其保存到预先设定的某个目录下。 方法 import web urls = ('/upload', 'Upload') class Upload: def GET(self): web.header("Content-Type","text/html; charset=utf-8") return """<html><head></he

  • 问题内容: 我必须对数据库类使用SQLPLUS,我们的第一个任务是简单保存。 我按照说明进行了操作。(我正在使用PuTTY来访问sqlplus) “在本练习中使用以下SQL命令,并尝试使用SAVE和SPOOL命令来保存SQL命令并输出到外部文件。 对于此实验,请执行以下操作: 在SQL>提示符下,键入(或如果文件已存在),然后单击;然后键入任何SQL命令,这些命令将保存到test.sql文件。稍后

  • 我现在已经切换到Android Studio,并用源代码树在Git中保存我的项目。每当我从模块中添加或删除任何库时,它的.iml文件也会更改。如果我提交*.iml真的无关紧要,因为它们是在其他Android Studio中自动生成的。但是,在这里它说您应该存储*.iml。我的问题是,我们真的需要和别人分享我们的*.iml吗?若有,原因为何?

  • 问题内容: 我正在尝试将脚本的结果输出到文本文件中。脚本运行良好,唯一的问题是将结果保存到文本文件(output.txt)中时,仅保存了最后一行,不是全部吗?我不确定我在做什么错。任何建议将不胜感激。 欢呼! 问题答案: 你需要写 这将附加文件,而不是覆盖放置在文件中的任何内容。

  • 我尝试了以下代码(): 但我得到了这个错误: 我期望最终的

  • 我正在使用redis。数据库是 键入时: redis cli保存 我不知道在哪里倾倒。rdb保存到(因为redis是作为服务启动的,而不是在我的本地目录中)。 > 如何找到redis保存dump.rdb的位置? 有什么方法可以指定一个文件名来“保存”,所以我键入如下内容: redis cli保存~/db-2012-06-24。rdb公司 谢啦