如何在此代码中设置图像而不是白色?

时间:2017-10-16 21:09:16

标签: java

我试图在JAVA中制作某种Paint程序。使用图形类,我可以设置绘画空间并绘制它。我希望这个空间是一个图像而不是一个白色的空间,尽管我付出了很多努力,但我无法做到。如果我成功了,我就无法画出图像。

带图片的非工作代码:https://pastebin.com/zNnWGjgS

Stackoverflow forces me to put some code here but it's too long

没有图片的工作代码:https://pastebin.com/r1nFHY9c

Stackoverflow forces me to put some code here but it's too long

请帮帮我们。谢谢。

1 个答案:

答案 0 :(得分:0)

快速浏览一下paintComponent我可以看出你很困惑。您要做的就是将图像的图形加载到Graphics2D g2并在其上绘制线条。在您的非工作示例中:

  1. 使用createImage(getSize().width, getSize().height);

  2. 创建新图像
  3. 您将图形g2设置为空图像图形

  4. 您加载image并放弃先前的初始化,将g2留空。

  5. 您绘制图像,而对g2图形进行了所有更改。

  6. 要修复错误,只需将paintComponent更改为:

    @Override
    protected void paintComponent(Graphics g) {
        if (image == null) {
            try {
                image = ImageIO.read(new URL("https://i.imgur.com/mjxu50B.png"));
    
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            g2 = (Graphics2D) image.getGraphics();
    
            // enable antialiasing
            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            g2.setColor(Color.BLACK);
        }
    
        g.drawImage(image, 0, 0, null);
    }
    

    PS。在将来的帖子中,尝试仅发布非工作示例,并尽量保持简单。